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 ,实现FromStr trait |
网页编程
刮擦网页
食谱 | 箱子 | 类别 |
---|---|---|
从网页 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 |