- Rust 编程语言
- 前言
- 导言
- 1. 入门
- 1.1. 安装
- 1.2. 你好,世界!
- 1.3. 你好,Cargo!
- 2. 编程一个猜谜游戏
- 3. 通用编程概念
- 3.1. 变量和可变性
- 3.2. 数据类型
- 3.3. 函数
- 3.4. 注释
- 3.5. 控制流
- 4. 理解所有权
- 4.1. 什么是所有权?
- 4.2. 引用与借用
- 4.3. 切片类型
- 5. 使用结构体组织相关数据
- 5.1. 定义和实例化结构体
- 5.2. 使用结构体的示例程序
- 5.3. 方法语法
- 6. 枚举和模式匹配
- 6.1. 定义枚举
- 6.2. match 控制流结构
- 6.3. 使用 if let 的简洁控制流
- 7. 使用包(Packages)、箱(Crates)和模块(Modules)管理不断增长的项目
- 7.1. 包和箱
- 7.2. 定义模块以控制作用域和私有性
- 7.3. 在模块树中引用项的路径
- 7.4. 使用 use 关键字将路径引入作用域
- 7.5. 将模块分离到不同的文件中
- 8. 通用集合
- 8.1. 使用 Vecotr 存储列表值
- 8.2. 使用 String 存储 UTF-8 编码的文本
- 8.3. 使用哈希 Map 存储键值对
- 9. 错误处理
- 9.1. 使用 panic! 处理不可恢复的错误
- 9.2. 使用 Result 处理可恢复的错误
- 9.3. 何时 panic!?
- 10. 泛型、特征和生命周期
- 10.1. 泛型数据类型
- 10.2. 特征:定义共享行为
- 10.3. 使用生命周期验证引用
- 11. 编写自动化测试
- 11.1. 如何编写测试
- 11.2. 控制测试的运行方式
- 11.3. 测试组织
- 12. 一个 I/O 项目:构建一个命令行程序
- 12.1. 接收命令行参数
- 12.2. 读取文件
- 12.3. 重构以提高模块化和错误处理能力
- 12.4. 使用测试驱动开发开发库的功能
- 12.5. 使用环境变量
- 12.6. 将错误消息写入标准错误而不是标准输出
- 13. 函数式语言特性:迭代器和闭包
- 13.1. 闭包:捕获其环境的匿名函数
- 13.2. 使用迭代器处理一系列项
- 13.3. 改进我们的 I/O 项目
- 13.4. 比较性能:循环 vs. 迭代器
- 14. 更多关于 Cargo 和 Crates.io
- 14.1. 使用发布配置文件自定义构建
- 14.2. 将 crate 发布到 Crates.io
- 14.3. Cargo 工作空间
- 14.4. 使用 cargo install 从 Crates.io 安装二进制文件
- 14.5. 使用自定义命令扩展 Cargo
- 15. 智能指针
- 15.1. 使用 Box<T> 指向堆上的数据
- 15.2. 使用 Deref 特征将智能指针视为常规引用
- 15.3. 使用 Drop 特征在清理时运行代码
- 15.4. Rc<T>,引用计数智能指针
- 15.5. RefCell<T> 和内部可变性模式
- 15.6. 引用循环可能导致内存泄漏
- 16. 无畏并发
- 16.1. 使用线程同时运行代码
- 16.2. 使用消息传递在线程之间传输数据
- 16.3. 共享状态并发
- 16.4. 使用 Sync 和 Send 特征进行可扩展并发
- 17. Rust 的面向对象编程特性
- 17.1. 面向对象语言的特征
- 17.2. 使用允许不同类型值的特征对象
- 17.3. 实现面向对象的设计模式
- 18. 模式和匹配
- 18.1. 可以使用模式的所有位置
- 18.2. 可反驳性:模式是否可能匹配失败
- 18.3. 模式语法
- 19. 高级特性
- 19.1. 不安全 Rust
- 19.2. 高级特征
- 19.3. 高级类型
- 19.4. 高级函数和闭包
- 19.5. 宏
- 20. 最终项目:构建一个多线程 Web 服务器
- 20.1. 构建一个单线程 Web 服务器
- 20.2. 将单线程服务器转换为多线程服务器
- 20.3. 优雅关闭和清理
- 21. 附录
- 21.1. A - 关键字
- 21.2. B - 操作符和符号
- 21.3. C - 可派生特征
- 21.4. D - 有用的开发工具
- 21.5. E - 版本
- 21.6. F - 本书的翻译版本
- 21.7. G - Rust 的构建方式和 “Nightly Rust”