Rust 烹饪书
这个Rust 烹饪书是一套简单的例子,它演示了如何使用 Rust 生态系统的箱子,作为完成常见编程任务的良好实践。
了解 Rust 烹饪书 更多,包括如何阅读这本书的提示、如何使用示例,以及约定好的注释风格。
贡献
这个项目的目的是,让新的 Rust 程序员能够容易做出贡献,帮个小忙,并且是一个与 Rust 社区接触的简单方法。本库十分欢迎帮助。详情见CONTRIBUTING.md.
算法
| 食谱 | 箱子 | 分类 |
|---|---|---|
| 生成,随机数 | | |
| 生成,范围内的随机数 | | |
| 生成,具有给定分布的随机数 | | |
| 生成,自定义类型的随机值 | | |
| 从一组字母字符,创建随机密码 | | |
| 从一组用户定义的字符,创建随机密码 | | |
| 排序一个,整数的 vector | | |
| 排序一个,浮点的 vector | | |
| 排序一个,结构的 vector | | |
命令行
| 食谱 | 箱子 | 分类 |
|---|---|---|
| 解析命令行参数 | | |
| ANSI 终端 | | |
压缩
| 食谱 | 箱子 | 分类 |
|---|---|---|
| 解压缩 一个 tarball | | |
| 将一个目录压缩为 tarball | | |
| 从路径中删除前缀时,解压缩一个 tarball | | |
并发性
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 生成一个短命线程 | | |
| 保持全局可变状态 | | |
并发计算所有 *.iso 文件的 SHA1 和 | | |
| 将绘制分形工作,分派到线程池 | | |
| 并行,改变数组的元素 | | |
| 如果集合的任何或所有元素,与给定物匹配,则并行测试 | | |
| 并行,使用给定物搜索项 | | |
| 并行,排序 vector | | |
| 并行,缩小地图 | | |
| 并行,生成 JPG 缩略图 | | |
密码学
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 计算文件的 SHA-256 码 | | |
| 使用 HMAC 码,签名并验证消息 | | |
| 用 PBKDF2 对密码,进行 加盐(Salt) 和 哈希 操作 | | |
数据结构
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 定义表示为位字段的类型,并操作 | | |
数据库
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 创建 sqlite 数据库 | | |
| 插入和查询数据 | | |
| 在 Postgres 数据库中,创建表 | [![postgres-badge]][postgres] | |
| 插入和查询数据 | [![postgres-badge]][postgres] | |
| 综合数据 | [![postgres-badge]][postgres] | |
日期和时间
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 测量已用时间 | | |
| 执行,检查日期和时间的计算 | | |
| 将本地时间,转换为其他时区 | | |
| 检查日期和时间 | | |
| 将日期转换为 Unix 时间戳,或相反 | | |
| 显示格式化的日期和时间 | | |
| 将字符串解析为 DateTime 结构 | | |
开发工具
调试
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 将调试消息,记录到控制台 | | |
| 将错误消息,记录到控制台 | | |
| 记录到 stdout ,而不是 stderr | | |
| 使用自定义记录器,记录消息 | | |
| 记录到 Unix 系统日志 | | |
| 启用每个模块的日志级别 | | |
| 使用自定义环境变量,设置日志记录 | | |
| 在日志消息中,包含时间戳 | | |
| 将消息记录,到自定义位置 | | |
版本控制
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 解析,并增加版本字符串 | | |
| 分析,复杂版本字符串 | | |
| 检查给定版本,是否为预发布版本 | | |
| 查找,满足给定范围的最新版本 | | |
| 检查外部命令版本的兼容性 | | |
构建时
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 静态编译,并链接到捆绑的 C 库 | | |
| 编译,并链接到捆绑的 C++库 | | |
| 自定义设置时,编译 C 库 | | |
编码
文件系统
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 从文件中,读取字符串行 | | |
| 避免写入和读取,同一文件 | | |
| 随机使用内存映射,访问文件 | | |
| 过去 24 小时内,修改过的文件名 | | |
| 查找给定路径的循环 | | |
| 递归查找,重复的文件名 | | |
| 递归查找,具有给定断言的所有文件 | | |
| 跳过点(隐藏)文件,遍历目录 | | |
| 在给定深度(目录),递归计算文件大小 | | |
| 递归查找,所有 PNG 文件 | | |
| 查找具有给定模式的所有文件,忽略文件名大小写 | | |
硬件支持
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 检查逻辑 CPU 的核数 | | |
内存管理
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 声明,延迟计算的常量 | | |
网络
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 侦听,未使用的端口 TCP/IP | | |
操作系统
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 运行外部命令,并处理 stdout | | |
| 运行传递到 stdin 的外部命令,并检查错误代码 | | |
| 运行管道的外部命令 | | |
| 将子进程的 stdout 和 stderr ,重定向到同一文件 | | |
| 连续处理,子进程的输出 | | |
科学类
数学
| 食谱 | 箱子 | 类别 |
|---|---|---|
| vector 和 | | |
| vector 范数 | | |
| 矩阵相加 | | |
| 矩阵乘法 | | |
| 用 vector 和矩阵,相乘一个标量 | | |
| 反转矩阵 | [![nalgebra-badge]][nalgebra] | |
| 计算三角形的边长 | | |
| 验证 tan 等于 sin 除以 cos | | |
| 地球两点之间的距离 | | |
| 创建复数 | | |
| 复数相加 | | |
| 复数的数学函数 | | |
| 集中趋势度量 | | |
| 计算标准偏差 | | |
| 大整数 | | |
文本处理
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 收集 Unicode 字形 | [![unicode-segmentation-badge]][unicode-segmentation] | |
| 从电子邮件地址,提取登录信息并验证 | | |
从文本中,提取独一的#标签列表 | | |
| 从文本中,提取电话号码 | | |
| 通过匹配多个正则表达式,筛选日志文件 | | |
| 将一个文本模式的所有出现项,替换为另一个模式。 | | |
为一个自定义struct,实现FromStrtrait | | |
网页编程
刮擦网页
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 从网页 HTML 中,提取所有链接 | | |
| 检查网页,是否有断开的链接 | | |
| 从 Mediawiki markup 中,提取所有独一链接 | | |
统一资源位置(URL)
| 食谱 | 箱子 | 类别 |
|---|---|---|
将字符串的一个 URL,解析为Url类型 | | |
| 通过移除路径段,创建一个 base URL | | |
| 从 base URL ,创建新的 URL | | |
| 提取 URL 源(方案名/主机/端口) | | |
| 从 URL 中,删除片段标识符和查询对 | | |
媒体类型(MIME)
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 从字符串,获取 MIME 类型 | | |
| 从文件名,获取 MIME 类型 | | |
| 解析 HTTP 响应的 MIME 类型 | | |
客户端
| 食谱 | 箱子 | 类别 |
|---|---|---|
| 发出 HTTP GET 请求 | | |
| 查询 GitHub API | | |
| 检查 API 资源,是否存在 | | |
| 使用 GitHub API ,创建和删除 Gist | | |
| 使用一个(具备)分页的 RESTful API | | |
| 将文件下载到临时目录 | | |
| 使用 HTTP range 标头,进行部分下载 | | |
| POST 文件,到 paste.rs | | |