BRIEF —《Rust 程序员硬核修炼手册》
本文件是写作总纲。所有写作代理必须先读本文,再动笔。样章见
01-为什么是Rust.md与02-所有权.md,风格以样章为准。
一、项目目标
- 总字数:≥ 120,000 字符(含代码与标点,以 Python
len(open(f,encoding='utf-8').read())计;不是中文字数,技术书含大量代码与标识符)。 - 定位:独立成体系的 Rust 硬核修炼手册。不假设读者是 Go 程序员,不写”在 Go 里你这样做、在 Rust 里那样做”的对照栏目;读者默认是有几年经验的程序员(懂变量、栈堆、指针、并发的基本概念),但 Rust 从零讲起、讲到深。
- 精神:像机房泡了二十年的老兵带徒弟——循循善诱、多反问、不直接喂结论。先把问题问对,再层层剥开。案例要生动、生活化(快递柜、餐厅后厨、图书馆借书、合租公寓、装修合同都是好比喻),不要干巴巴复述文档。
二、读者与语气
- 读者:工作 3-8 年的后端/系统程序员,会用一门语言,但”会用不精通”,想真正吃透 Rust 的设计意图。
- narrator 人设(墨叔):住在协议栈里的老兵。可以调侃、可以反问、可以骂一句”你这想法危险”。不用 emoji。
- 风格:导师 vs 读者对谈。大量使用反问(“你觉得呢?""为什么编译器非得管这么宽?""换成你会怎么设计?”),但反问之后自己把思考路径铺开,不真的把读者晾着。
三、章节主线(共 21 个文件:00 导读 + 01-19 正文 + 20 收尾 + README)
| 文件 | 章 | 主题 | 核心要讲透的点 |
|---|---|---|---|
| 00-导读.md | 导读 | 这本书怎么读、Rust 难在哪、心智地图 | 为什么 Rust 学习曲线是”陡然后平”;全书导航 |
| 01-为什么是Rust.md | 一 | 内存安全的另一条路 | 没有 GC 如何保证安全;RAII;“编译期把 bug 挡在门外”的哲学 |
| 02-所有权.md | 二 | 所有权:第一性原理 | move 语义、栈 vs 堆、drop、作用域、浅拷贝/深拷贝的消亡 |
| 03-借用与引用.md | 三 | 借用与引用 | &T/&mut T;同一时刻要么多读要么一写;悬垂引用的消灭 |
| 04-生命周期.md | 四 | 生命周期 | 'a 是什么(不是存活时间,是约束关系);标注如何消除歧义;省略规则 |
| 05-数据类型与结构体.md | 五 | 类型、结构体、方法 | struct/enum/tuple;impl;值语义;对齐与 padding(点到即止) |
| 06-枚举与模式匹配.md | 六 | 枚举与模式匹配 | Rust 的 enum 是代数数据类型;match 穷尽;if let/while let |
| 07-错误处理.md | 七 | 错误处理 | Result/Option;?;panic 的边界;错误类型设计 |
| 08-泛型与Trait.md | 八 | 泛型与 Trait:多态 | trait 是 Rust 的”接口”但更强;静态分发 vs 动态分发入门;trait bound |
| 09-Trait进阶.md | 九 | Trait 进阶 | trait object、dyn、关联类型、默认方法、Derive、孤儿规则 |
| 10-集合与智能指针.md | 十 | 集合与智能指针 | Vec/String/Box/Rc/RefCell/Arc;内部可变性的哲学 |
| 11-迭代器与闭包.md | 十一 | 迭代器与闭包 | 闭包捕获;零成本抽象的 iterator;lazy;map/filter/collect |
| 12-模块化与crate.md | 十二 | 模块化与 crate | 模块树、use、可见性;Cargo;crate/package/workspace |
| 13-并发模型.md | 十三 | 并发:所有权消灭数据竞争 | thread::spawn;move 闭包;Arc<Mutex>;恐惧借用检查器消失 |
| 14-async与Future.md | 十四 | async/await 与 Future | Future 是状态机;Pin;tokio 运行时;为什么 Rust 异步难写 |
| 15-unsafe与FFI.md | 十五 | unsafe 与 FFI | 哪 5 件事 unsafe 能破;如何安全封装;extern/绑定 C |
| 16-宏系统.md | 十六 | 宏 | 声明宏 macro_rules!;过程宏;#[derive] 原理 |
| 17-零成本抽象与性能.md | 十七 | 零成本抽象与性能 | 单态化;内联;与 C++ 模板对比;benchmark 心态 |
| 18-实战项目.md | 十八 | 实战:写一个 mini 工具 | 串起前面知识(如 mini grep / 并发下载器 / 简易 KV);真实取舍 |
| 19-生态与进阶路线.md | 十九 | 生态与进阶 | 标准库、tokio、serde、rayon、const generics、编译期计算、学习路线 |
| 20-收尾.md | 收尾 | 寄语 | 修炼心法;把”编译器信任”内化为工程直觉 |
四、每章固定结构(写作代理务必遵守)
- 开篇一句话问题:用一句带反问的话把读者钩住(例:“如果一门语言在你写错的时候拒绝编译,而不是运行时崩溃,你会觉得它烦,还是觉得它靠谱?”)。
- 核心论述:分 3-6 个小节,层层推进。每个难点先用生活比喻,再回到代码。代码少而准——只为锚定理解,不堆示例。
- 特定读者连接:在章中某处,点一下”如果你写过 X 语言,这里的心智要重装”,但不展开成对照表。
- 章末标记(强制、成对出现):
【思考题】后跟 2-3 个生活化/设计向问题(不是考背诵,是逼读者自己推一遍)。【参考答案】后跟对应解答(读者把答案当学习材料看,所以写详细、写推导,不要只给结论)。- 标记写法:方头括号直接跟文字,独立成行,
## 思考题/### 思考题这类也统一成【思考题】。
- 小结:一句话收住本章主旨。
五、写作风格硬要求
- 对话讨论式,多反问,不直接给结论。
- 案例生活化(快递柜、餐厅、图书馆、合租、装修合同、停车场)。系统概念用比喻讲清后再上代码。
- 讲设计意图,不讲条文罗列。知道 Rust 为什么这么设计,比背下所有规则有用。
- 代码少而准,用 Rust 真实语法(```rust 代码块),注释用中文。代码只用来”钉”住理解。
- 不用 emoji。标点用 ASCII 或中文全角。
- 把读者当聪明人:不啰嗦已懂的,专攻半懂和误区。
六、禁止事项
- 禁止写成 API 文档搬运 / 教程流水账。
- 禁止堆砌代码而无讲解。
- 禁止在正文行内写”【思考题】“字样当普通词(会被校验脚本误判),标记只用于章末独立成行。
- 禁止出现”记住就行”——必须讲 why。
- 禁止假设读者是 Go 程序员做系统性对照(角度已定为独立体系)。
七、输出要求(每章写完后必须自证)
- 每章 ≥ 6,000 字符(含代码)。不足必须扩展,不得糊弄。
- 校验命令(用 Python,因为本机 bash 的 wc 不可用):
import os p = r"C:\Users\admin\Desktop\Rust程序员硬核修炼手册\<文件名>.md" t = open(p, encoding="utf-8").read() print(len(t), "chars") - 保存为
C:\Users\admin\Desktop\Rust程序员硬核修炼手册\<NN>-<标题>.md,文件名带两位序号前缀便于排序。 - 代理返回:所写文件清单 + 每个文件的字符数。
八、质量底线
- 跑题、水字数、把思考题当摆设——一律重写。
- 思考题必须有”逼读者自己推导”的锐度;参考答案必须给出完整推导,不是一句话结论。