Rust 学习路线总览
这是一份为已经有其他语言(如 JS/TS、Go、Java、C++)基础的开发者准备的 Rust 学习路线图。 从 "Hello World" 到 "为什么我的生命周期编译不过",再到 "用 Tokio 和 Axum 写高并发服务" 的完整闭环。
一句话先记住:Rust 不是为了折磨你而设计出所有权和生命周期的,它是为了在不使用垃圾回收(GC)的前提下,保证内存安全和无数据竞争的并发。
一、整套教程的结构
按 "从基础到系统编程" 分五部分,前三部分讲语言特性,后两部分讲工程应用:
| 部分 | 主题 | 解决的核心问题 |
|---|---|---|
| 一、基础与所有权 | 语法、所有权、借用 | Rust 最难也是最核心的心智模型建立 |
| 二、类型与抽象 | Enum、Trait、泛型 | 如何在 Rust 中优雅地组织代码和复用逻辑 |
| 三、并发与异步 | 线程、Channel、Async/Await | 突破单核,理解 Rust 的无畏并发与 Tokio 运行时 |
| 四、工程实战与生态 | CLI、Web 服务、数据库 | 怎么用 Rust 把实际的活干了(Axum/SQLx) |
| 五、进阶与系统级 | 宏、Unsafe、FFI、WASM | 榨干性能,与底层系统和其他语言交互 |
二、完整目录(规划约 30 篇)
第一部分:基础语法与核心心智(所有权与借用)
02-环境搭建与Cargo全家桶.md—— 不只是编译器,更是无敌的包管理器03-基础语法速通.md—— 变量、数据类型、控制流(和其他语言大同小异)04-所有权机制-Rust的灵魂.md—— 为什么字符串赋值会报错(Move 语义)05-引用与借用.md—— 借东西要还,而且不能同时有人在改(读写锁原则)06-切片(Slice).md—— 零拷贝访问集合序列07-结构体与方法(Struct & impl).md—— 面向对象的数据封装
第二部分:类型系统与抽象机制
08-枚举与模式匹配(Enum & Match).md—— 吊打其他语言的强大类型和分支09-Option与Result-告别空指针与异常.md—— 优雅的错误处理机制10-集合类型.md—— Vector、String 与 HashMap 的底层细节11-泛型(Generics).md—— 消除重复代码12-Trait-接口与多态.md—— 鸭子类型与静态分发/动态分发(Box<dyn Trait>)13-生命周期(Lifetimes).md—— 告诉编译器引用的有效范围(最折磨人的一集)
第三部分:闭包、并发与异步
14-闭包与迭代器.md—— 函数式编程与零成本抽象15-智能指针.md—— Box、Rc、Arc、RefCell(绕过借用检查器的后门)16-无畏并发-多线程与锁.md—— Thread、Mutex、RwLock 与 Send/Sync17-消息传递-Channel.md—— 不要通过共享内存来通信,要通过通信来共享内存18-Async与Await底层原理.md—— Future、Waker 与 Pin 是什么鬼19-Tokio运行时详解.md—— Rust 异步生态的事实标准
第四部分:工程实战与生态(用 Rust 干活)
20-编写命令行工具(CLI).md—— Clap、Anyhow 打造顺手的开发工具21-Axum-现代Web框架入门.md—— 路由、中间件与状态共享22-数据库交互-SQLx与SeaORM.md—— 异步查询与编译期 SQL 检查23-Serde-序列化与反序列化.md—— 统治整个生态的数据转换库24-自动化测试与CI/CD.md—— 单元测试、集成测试与 GitHub Actions25-实战:写一个带 Auth 的 RESTful API.md—— 把 Web 生态串起来
第五部分:底层深入与跨界
26-Unsafe Rust.md—— 我比编译器聪明,出了事我负责(裸指针与未定义行为)27-宏(Macros).md—— 声明宏与过程宏(写代码的代码)28-FFI-与其他语言交互.md—— 把 Rust 编译成动态链接库给 C/Python/Node.js 用29-WebAssembly(WASM)实战.md—— 让 Rust 跑在浏览器里30-Rust性能优化与火焰图.md—— 找出代码中的性能瓶颈
三、推荐的工具链
| 用途 | 工具 | 备注 |
|---|---|---|
| IDE/编辑器 | RustRover (JetBrains) / VSCode (rust-analyzer) / Cursor | rust-analyzer 是必备插件 |
| 编译器套件 | rustup, rustc, cargo | rustup 是安装管理器,cargo 是包管理器 |
| 格式化与Lint | rustfmt, clippy | 每天提交代码前必跑 cargo clippy |
| 工具链切换 | rustup default stable/nightly | 某些前沿库可能需要 nightly 版本 |
四、给新手的几个忠告
- 跟编译器做朋友,不要对抗它。 Rust 编译器(rustc)的报错是世界上最友好的报错。仔细读它的提示,通常它已经把怎么改的代码都写在终端里了。
- 第一周你会极度挫败。 写链表、图等数据结构时会被生命周期按在地上摩擦,这是正常的。先用
.clone()把代码跑通,后期再来优化性能,不要一开始就追求零拷贝。 - 不要一上来就写 Async。 在你彻底弄懂所有权、生命周期和 Trait 之前,强行写带引用的异步代码会让你陷入
Pin和Lifetime的深渊。 - 多用模式匹配和迭代器。 这是 Rust 写起来最爽的地方,习惯了之后你会觉得其他语言的
if-else和for循环索然无味。
下一篇:02-环境搭建与Cargo全家桶.md,先把开发环境搞定。