Rust Cookbook 中文版
中文译注(Chinese translation of the Rust Cookbook):
- 《Rust Cookbook 中文版》 翻译自 The Rust Cookbook(Cookin' with Rust),查看此书的 Github 翻译项目。
- 本书翻译内容源自 zzy的开源的翻译版本,rust-lang-cn 开源组织对原译者感激不尽!
- 许可协议:跟随原翻译版本的 MIT 和 Apache 2.0 双许可授权。另本站的英文版保持原有的 CC0 协议。
- 本站支持文档中英文切换,点击页面右上角语言图标可切换到相同章节的英文页面,英文版每天都会自动同步一次官方的最新版本。
- 若发现本页表达错误或帮助我们改进翻译,可点击右上角的编辑按钮打开本页对应源码文件进行编辑和修改,Rust 中文资源的开源组织发展离不开大家,感谢您的支持和帮助!
《Rust Cookbook 中文版》是 Rust 程序设计语言(Rust 官方教程简体中文版)的简要实例示例集合:展示了在 Rust 生态系统中,使用各类 crate 来完成常见编程任务的良好实践。
了解更多关于《Rust Cookbook 中文版》一书的信息,请阅读关于本书,包括:如何阅读本书的提示、如何使用实例示例,以及关于注释的约定。
参与贡献
Rust Cookbook 项目(英文和中文两者)的目的是让 Rust 程序员新手能够更容易地参与到 Rust 社区中,因此欢迎你做出贡献,详情可查看“参与贡献”文件。
算法
生成随机值
实例名称 | Crates | 类别 |
---|---|---|
生成随机数 | ||
生成范围内随机数 | ||
生成给定分布随机数 | ||
生成自定义类型随机值 | ||
从一组字母数字字符创建随机密码 | ||
从一组用户定义字符创建随机密码 |
Vector 排序
实例名称 | Crates | 类别 |
---|---|---|
整数 Vector 排序 | ||
浮点数 Vector 排序 | ||
结构体 Vector 排序 |
命令行
参数解析
实例名称 | Crates | 类别 |
---|---|---|
解析命令行参数 |
ANSI 终端
实例名称 | Crates | 类别 |
---|---|---|
ANSI 终端 |
压缩
使用 tar 包
实例名称 | Crates | 类别 |
---|---|---|
解压 tar 包 | ||
压缩目录为 tar 包 | ||
从路径移除前缀时,解压 tar 包 |
并发/并行
显式线程
实例名称 | Crates | 类别 |
---|---|---|
生成短期线程 | ||
创建并发的数据管道 | ||
在两个线程间传递数据 | ||
保持全局可变状态 | ||
对所有 iso 文件的 SHA256 值并发求和 | ||
将绘制分形的线程分派到线程池 |
数据并行
实例名称 | Crates | 类别 |
---|---|---|
并行改变数组中元素 | ||
并行测试集合中任意或所有的元素是否匹配给定断言 | ||
使用给定断言并行搜索项 | ||
对 vector 并行排序 | ||
Map-reduce 并行计算 | ||
并行生成 jpg 缩略图 |
密码学
散列(哈希)
实例名称 | Crates | 类别 |
---|---|---|
计算文件的 SHA-256 摘要 | ||
使用 HMAC 摘要对消息进行签名和验证 |
加密
实例名称 | Crates | 类别 |
---|---|---|
使用 PBKDF2 对密码进行加密(salt)和散列(hash)运算 |
数据结构
位域
实例名称 | Crates | 类别 |
---|---|---|
定义并操作位域风格的类型 |
数据库
SQLite
实例名称 | Crates | 类别 |
---|---|---|
创建 SQLite 数据库 | ||
数据插入和查询 | ||
事务处理 |
使用 Postgres
实例名称 | Crates | 类别 |
---|---|---|
Postgres 数据库中创建表 | ||
数据插入和查询 | ||
数据聚合 |
日期及时间
期间和计算
实例名称 | Crates | 类别 |
---|---|---|
测量运行时间 | ||
执行日期检查和时间计算 | ||
时间的时区转换 |
解析与显示
实例名称 | Crates | 类别 |
---|---|---|
检查日期和时间 | ||
日期和 UNIX 时间戳的互相转换 | ||
日期和时间的格式化显示 | ||
将字符串解析为 DateTime 结构体 |
开发工具
调试工具
日志信息
实例名称 | Crates | 类别 |
---|---|---|
记录调试信息到控制台 | ||
记录错误信息到控制台 | ||
记录信息时,用标准输出 stdout 替换标准错误 stderr | ||
使用自定义日志记录器记录信息 | ||
记录到 Unix 系统日志 |
日志配置
实例名称 | Crates | 类别 |
---|---|---|
启用每个模块的日志级别 | ||
用自定义环境变量设置日志记录 | ||
在日志信息中包含时间戳 | ||
将信息记录到自定义位置 |
版本控制
实例名称 | Crates | 类别 |
---|---|---|
解析并递增版本字符串 | ||
解析复杂的版本字符串 | ||
检查给定版本是否为预发布版本 | ||
查询适配给定范围的最新版本 | ||
检查外部命令的版本兼容性 |
构建时
实例名称 | Crates | 类别 |
---|---|---|
编译并静态链接到绑定的 C 语言库 | ||
编译并静态链接到绑定的 C++ 语言库 | ||
编译 C 语言库时自定义设置 |
编码
字符集
实例名称 | Crates | 类别 |
---|---|---|
百分比编码(URL 编码)字符串 | ||
将字符串编码为 application/x-www-form-urlencoded | ||
编码和解码十六进制 | ||
编码和解码 base64 |
CSV 处理
实例名称 | Crates | 类别 |
---|---|---|
读取 CSV 记录 | ||
读取有不同分隔符的 CSV 记录 | ||
筛选匹配断言的 CSV 记录 | ||
用 Serde 处理无效的 CSV 数据 | ||
将记录序列化为 CSV | ||
用 Serde 将记录序列化为 CSV | ||
转换 CSV 文件的列 |
结构化数据
实例名称 | Crates | 类别 |
---|---|---|
对非结构化 JSON 序列化和反序列化 | ||
反序列化 TOML 配置文件 | ||
以小端模式(低位模式)字节顺序读写整数 |
错误处理
处理错误变量
实例名称 | Crates | 类别 |
---|---|---|
在 main 方法中对错误适当处理 | ||
避免在错误转变过程中遗漏错误 | ||
获取复杂错误场景的回溯 |
文件系统
文件读写
实例名称 | Crates | 类别 |
---|---|---|
读取文件的字符串行 | ||
避免读取写入同一文件 | ||
使用内存映射随机访问文件 |
目录遍历
实例名称 | Crates | 类别 |
---|---|---|
过去 24 小时内修改过的文件名 | ||
查找给定路径的循环 | ||
递归查找重名文件 | ||
使用给定断言递归查找所有文件 | ||
跳过隐藏文件遍历目录 | ||
在给定深度的目录,递归计算文件大小 | ||
递归查找所有 png 文件 | ||
忽略文件名大小写,使用给定模式查找所有文件 |
硬件支持
处理器
实例名称 | Crates | 类别 |
---|---|---|
检查逻辑 cpu 内核的数量 |
内存管理
常量
实例名称 | Crates | 类别 |
---|---|---|
声明延迟计算常量 |
网络
服务器
实例名称 | Crates | 类别 |
---|---|---|
监听未使用的 TCP/IP 端口 |
操作系统
外部命令
实例名称 | Crates | 类别 |
---|---|---|
运行外部命令并处理 stdout | ||
运行传递 stdin 的外部命令,并检查错误代码 | ||
运行管道传输的外部命令 | ||
将子进程的 stdout 和 stderr 重定向到同一个文件 | ||
持续处理子进程的输出 | ||
读取环境变量 |
科学计算
数学
线性代数
实例名称 | Crates | 类别 |
---|---|---|
Vector 范数 | ||
Vector 比较 | ||
矩阵相加 | ||
矩阵相乘 | ||
标量、vector、矩阵相乘 | ||
矩阵求逆 | ||
(反)序列化矩阵 |
三角学
实例名称 | Crates | 类别 |
---|---|---|
计算三角形的边长 | ||
验证正切(tan)等于正弦(sin)除以余弦(cos) | ||
地球上两点之间的距离 |
复数
实例名称 | Crates | 类别 |
---|---|---|
创建复数 | ||
复数相加 | ||
复数的数学函数 |
统计学
实例名称 | Crates | 类别 |
---|---|---|
集中趋势度量 | ||
计算标准偏差 |
其它数学计算
实例名称 | Crates | 类别 |
---|---|---|
大数 |
文本处理
正则表达式
实例名称 | Crates | 类别 |
---|---|---|
验证并提取电子邮件登录信息 | ||
从文本提取标签元素唯一的列表 | ||
从文本提取电话号码 | ||
通过匹配多个正则表达式来筛选日志文件 | ||
文本模式替换 |
字符串解析
实例名称 | Crates | 类别 |
---|---|---|
收集 Unicode 字符 | ||
自定义结构体 并实现 FromStr trait |
Web 编程
抓取网页
实例名称 | Crates | 类别 |
---|---|---|
从 HTML 网页中提取所有链接 | ||
检查网页死链 | ||
从 MediaWiki 标记页面提取所有唯一性链接 |
URL
实例名称 | Crates | 类别 |
---|---|---|
解析 URL 字符串为 Url 类型 | ||
通过移除路径段创建基本 URL | ||
从基本 URL 创建新 URLs | ||
提取 URL 源(scheme/ host/ port) | ||
从 URL 移除片段标识符和查询对 |
媒体类型(MIME)
实例名称 | Crates | 类别 |
---|---|---|
从字符串获取 MIME 类型 | ||
从文件名获取 MIME 类型 | ||
解析 HTTP 响应的 MIME 类型 |
客户端
请求处理
实例名称 | Crates | 类别 |
---|---|---|
发出 HTTP GET 请求 | ||
为 REST 请求设置自定义消息标头和 URL 参数 |
Web API 调用
实例名称 | Crates | 类别 |
---|---|---|
查询 GitHub API | ||
检查 API 资源是否存在 | ||
使用 GitHub API 创建和删除 Gist | ||
使用 RESTful API 分页 | ||
处理速率受限 API |
下载
实例名称 | Crates | 类别 |
---|---|---|
下载文件到临时目录 | ||
使用 HTTP range 请求头进行部分下载 | ||
POST 文件到 paste-rs |