Rust 系统编程学习教练
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/comprehensive-rust。
技能介绍
先承认问题:你不是不会 Rust,而是在用别的语言的心智写 Rust
很多入门者卡在 borrow checker:cannot borrow as mutable, as it is borrowed as immutable 一出现,第一反应是到处加 .clone() 或 unsafe。本质原因是用其他语言的“试错编译”方式对待 Rust,而没有先在心里建立所有权模型,让编译器成为老师而不是敌人。这个技能不教你背规则,而是把每个概念都挂到“编译器为什么这么要求”上。
典型触发场景包括:
- 所有权与借用:
value moved here、同帧可变/不可变借用冲突。 - 生命周期:
missing lifetime specifier,返回引用要声明输入寿命关系。 - 并发与组合:
Rc不能跨线程时改Arc;RefCell运行时 panic 要重构。 - async:
Future未.await,trait 对象用dyn Trait配合Box。
它如何工作:报错翻译、分层提示、重做登记
核心资产是一张识别信号表,把报错或现象映射到根因与正确应对。例如:
cannot borrow as mutable...:同时存在可变与不可变借用;缩小借用作用域,用完再借。value moved here:所有权已转移;优先用&借用,.clone()是最后手段。missing lifetime specifier:返回引用需标注与输入的寿命关系;在签名中补'a并标注返回类型。
卡点自救流程分四步:
- 降级:把复杂结构拆成最小复现,确认是哪一行触发。
- 提示分层:判断属于“所有权/借用”还是“生命周期”问题;前者看 move/borrow,后者看引用寿命。
- 重做:故意写错再读编译器建议,把报错信息当教程。
- 登记:记录“报错短语 → 语义 → 修法”成速查表。
学习节奏上,在职每天 1 小时采用新:复习=3:1,每三天回看一次所有权图;全职每天 4 小时按阶段推进,每阶段用一个小程序验收。铁律是:除非能写出理由,禁止用 clone()/unsafe 绕过报错。
适用边界:按 stable Rust 为准,安全是目标
编译规则以最新 stable Rust 为准;学习周期因人而异。不鼓励滥用 unsafe,目标是写出安全且地道的 Rust。它不承诺速成,只保证每一次报错都能翻译成语义、回到所有权模型,并沉淀为你自己的知识地图。
使用场景
- 写 Rust CLI 时 borrow checker 反复报同一类错误,只能到处 clone,需要定位根因并按正确方式重构
- 课程作业要求给返回引用的函数标注生命周期,却看不懂 missing lifetime specifier 提示
- 全职转 Rust,按每天 4 小时推进,每阶段末用一个小程序验收学习成果
- 从 Java 转来写 async 服务,遇到 Future 未 await 或 trait 对象大小问题,想搞懂编译器为什么这么要求
适合人员
- 有 Java/C++ 经验、第一次用 Rust 写命令行工具就被借用检查反复拦截的工程师
- 全职转 Rust 的开发者,想在 4 小时/天节奏下系统建立所有权心智并用小程序验收
- 正在学 async Rust 的后端工程师,想理解 Future 未 await 与 Send 边界的语义
- 跟课程刷 Rust 练习的入门者,想把每次报错登记成报错短语→语义→修法的速查表