用途
该技能用于在学习或讲解 Rust 概念时建立正确的心智模型。核心问题是:应该如何正确地思考某个 Rust 概念?它帮助回答:正确的心智模型是什么、应避免哪些误解、哪些类比有助于理解。
主要能力
提供关键概念的心智模型与类比对照:
- Ownership(所有权):唯一钥匙——只有一个人拥有房子钥匙
- Move(移动):钥匙交接——把钥匙送出去
- &T:借出用于阅读——借出一本书
- &mut T:独占编辑——只有你能编辑文档
- Lifetime 'a:有效作用域——“票有效期至……”
- Box<T>:堆指针——电视遥控器
- Rc<T>:共享所有权——多个遥控器,最后一个关闭
- Arc<T>:线程安全的 Rc——任何房间的遥控器
提供从其他语言转来的关键思维转变:
- Java/C#:值默认被拥有,而非引用
- C/C++:编译器强制执行安全规则
- Python/Go:无 GC,确定性销毁
- 函数式:通过所有权实现可变性的安全
- JavaScript:无 null,改用 Option
提供思考提示:困惑时问自己——所有权模型是什么?谁拥有这份数据?它存活多久?谁能访问它?Rust 提供什么保证(无数据竞争、无悬垂指针、无 use-after-free)?编译器在告诉我什么(错误=违反安全规则,解决方案=与规则协作)?
提供向上追溯(到设计理解层):问“为什么在 Rust 里不能做 X?”→ 什么安全保证会被违反?→ 查看 m01-m07 中被执行的规则 → 预期的设计模式是什么?
提供向下追溯(到实现层):理解概念后如何实现?→ m01-ownership 所有权模式 → m02-resource 智能指针选择 → m07-concurrency 线程安全。
提供常见误解纠正:
- E0382 use after move:错误模型是“GC 会清理”,正确模型是“所有权=唯一钥匙转移”
- E0502 borrow conflict:错误模型是“多个写者可以”,正确模型是“一次只能一个写者”
- E0499 multiple mut borrows:错误模型是“别名可变”,正确模型是“可变需要独占访问”
- E0106 missing lifetime:错误模型是“忽略作用域”,正确模型是“引用有有效作用域”
- E0507 cannot move from &T:错误模型是“隐式克隆”,正确模型是“引用不拥有数据”
提供过时思维纠正:
- “Rust 像 C++” → 不同的所有权模型
- “生命周期就是 GC” → 编译期有效作用域
- “Clone 解决一切” → 重构所有权
- “对抗借用检查器” → 与编译器协作
- “用 unsafe 绕过规则” → 先理解安全模式
提供可视化示意图:所有权可视化(栈与堆,移动后 s1 不再有效)和引用可视化(不可变借用可多个读者,可变借用只能一个写者)。
提供学习路径:
- 初学者:所有权基础——m01-ownership、m14-mental-model
- 中级:智能指针、错误处理——m02、m06
- 高级:并发、unsafe——m07、unsafe-checker
- 专家:设计模式——m09-m15、domain-*
提供相关技能指引:所有权错误见 m01-ownership,智能指针见 m02-resource,并发见 m07-concurrency,反模式见 m15-anti-pattern。
使用方式
在学习或讲解 Rust 概念时调用该技能,获取对应概念的心智模型、类比、思维转变提示与误解纠正。遇到所有权、借用、生命周期相关编译错误时,可借助其错误对照表定位错误模型并切换到正确模型。
适用场景
- 学习 Rust 所有权、借用、生命周期等核心概念
- 向他人讲解 Rust 概念时选择合适类比
- 从其他编程语言转向 Rust 时调整思维
- 排查 E0382、E0502、E0499、E0106、E0507 等编译错误
- 规划 Rust 学习路径
限制
该技能为概念性心智模型指导,不提供具体代码实现。具体实现需参考 m01-ownership、m02-resource、m07-concurrency 等相关技能。资料未提供收费、价格、平台等信息。