Rust 深度教程
Rust 深度教程
这是一条从语言规则走向系统设计的连续学习路线。15 章不按关键字堆知识点,而是围绕“值如何流动、状态如何表达、边界如何约束、系统如何验证”四个问题逐层推进。
使用方式
- 第一次学习:按章节顺序运行示例,并完成每章的观察题与改造题。
- 已有基础:从第 3 章开始,重点补齐所有权、Trait、生命周期、并发和异步。
- 遇到编译错误:先写下你认为发生了什么,再阅读完整诊断;不要把 clone() 或 unsafe 当作默认修复手段。
一、教程主线
Rust 的语法并不算庞大,真正需要建立的是一组可以迁移到任何项目的判断方法:
- 资源判断:值由谁拥有,何时释放,函数到底需要所有权还是借用?
- 状态判断:哪些状态可以同时存在,哪些状态互斥,能否用类型排除非法组合?
- 抽象判断:调用方需要知道具体类型,还是只需要某种行为契约?
- 边界判断:错误、模块、线程、异步任务和 unsafe 应停在哪一层?
- 验证判断:测试、文档、基准和编译器分别能证明什么,不能证明什么?
章节顺序按照这些问题的依赖关系安排:先看清值与类型,再建立抽象和工程边界,最后进入并发、异步与底层能力。
二、章节导航
text
语言地基:01 环境与反馈 → 02 表达式与控制流 → 03 所有权 → 04 数据建模
抽象工程:05 泛型与 Trait → 06 集合/错误/模块/测试 → 07 闭包与迭代器
资源并发:08 智能指针 → 09 线程并发 → 10 异步状态机 → 11 Unsafe 与宏
项目交付:12 Cargo 工程化 → 13 多线程 Web → 14 Tokio 服务 → 15 设计原则
| 章节 | 主题 | 学完后应能回答 |
|---|
| 第 1 章 | Rust 为什么值得学与环境搭建 | Rust 的约束换来了什么?如何建立稳定反馈循环? |
| 第 2 章 | 变量、类型、函数与流程控制 | 绑定、表达式、类型推导和控制流怎样协作? |
| 第 3 章 | 所有权、借用、切片与内存模型 | 谁负责释放资源?借用为什么既安全又有限制? |
| 第 4 章 | 结构体、枚举、模式匹配与方法 | 如何让类型只允许合法状态? |
| 第 5 章 | 泛型、Trait、生命周期与特征对象 | 静态抽象与动态抽象应该怎样选择? |
| 第 6 章 | 集合、错误、模块、测试与文档 | 如何把单文件示例发展成有边界的 crate? |
| 第 7 章 | 闭包、迭代器与命令行实战 | 如何把匹配策略和数据遍历拆成可组合流水线? |
| 第 8 章 | Box、Rc、RefCell 与自引用 | 唯一所有权、共享所有权和内部可变性怎样取舍? |
三、三条学习路线
路线 A:从零系统学习
按第 1—15 章推进。第 3—5 章不要追求速度:后续智能指针、并发和异步,本质上都在重新组合所有权、状态和抽象边界。
路线 B:已有其他语言经验
先快速完成第 1—2 章练习,再精读第 3—7 章。进入第 8 章前,确保你能解释 String、&str、Box<T> 与 dyn Trait 的所有权差异。
路线 C:按问题定位
- moved value、借用冲突、生命周期:第 3、5、8 章;
- 数据状态混乱、分支遗漏:第 4 章;
- 错误边界、模块组织、测试:第 6、12 章;
- 闭包捕获与迭代器所有权:第 7 章;
- 线程、异步与资源关闭:第 9、10、13、14 章;
- unsafe 与性能判断:第 11、15 章。
四、每章的实践节奏
- 预测:运行前先判断代码能否编译、值是否会移动、输出是什么。
- 验证:使用 cargo check 或 cargo test 获取反馈。
- 解释:不用术语堆砌,写清楚所有者、借用者、状态和边界。
- 改造:更换数据、增加一个错误分支,或把循环改成迭代器。
- 复盘:总结一条可迁移到真实项目的设计原则。
建议的最小命令集
cargo fmt 保持结构清晰,cargo check 提供快速反馈,cargo clippy 暴露可疑写法,cargo test 固定行为。四者应成为每个练习的结束动作。
- Claude Code Harness 深度教程
- Pi-Agent 深度教程