Rust 教程
Rust 是一门系统级编程语言,在零开销抽象的前提下通过所有权系统在编译期消除内存错误,无需垃圾回收即可保证内存安全。RootStack 的 Rust 教程承接 C/C++ 知识体系,强调底层原理与工程实践。
新形势下的 Rust 优势
在 2024-2025 年的技术格局下,Rust 已从实验性语言发展为关键基础设施语言:
- 系统安全重写潮: 美国政府(NSA/CISA)和欧盟均发布报告,建议将关键基础设施从 C/C++ 迁移至内存安全语言。Rust 是唯一满足”零成本 + 内存安全 + 无 GC”三项条件的生产语言
- Linux 内核官方接纳: Linux 6.1 起正式支持 Rust 内核模块,Android 已将 Rust 作为新系统代码的首选语言
- AI/ML 基础设施: HuggingFace 的 tokenizers、Polars、DataFusion 等核心组件均用 Rust 编写,因其可直接编译为 Python 原生扩展(PyO3),性能远超纯 Python
- WebAssembly 生态: Rust 是 WASM 的第一语言——wasm-bindgen、wasm-pack 等工具链最成熟,是前端性能敏感场景的首选
Rust 不是 C++ 的替代品,而是C++ 的互补演进方向——两者共享零开销哲学,但 Rust 将运行时错误前置到编译期。
本教程假设读者已有 C 或 C++ 基础。若为纯初学者,建议先完成 C 语言教程 的前 5 章再回到这里。
教程结构
rust/
├── rust目录.md <-- 你在这里
├── 1入门/ (14篇) 从零起步:所有权、借用、枚举、泛型
├── 2深入/ (11篇) 从比特到编译器:内存本质、类型系统、宏原理
├── 3实践/ (6篇) 项目实战:计算器→贪吃蛇→TUI 管理器
├── 4工程/ (12篇) 企业级:Cargo 工程化、测试、安全、FFI
└── 5重构/ (6篇) C→Rust 重构:代码阅读理解→中型项目迁移
推荐学习路径
阶段一:语法入门(2-3 周)
| 顺序 | 文件 | 重点 | 力扣练习 |
|---|
| 1 | [[1入门/01-认识Rust:你好世界 | 01 认识 Rust]] | rustup 安装、cargo 项目结构 |
| 2 | [[1入门/02-第一个程序:从零开始 | 02 第一个程序]] | fn main, println!, 宏语法 |
| 3 | [[1入门/03-变量与数据 | 03 变量与数据]] | 栈/堆、let mut、类型推断、整数溢出 |
| 4 | [[1入门/04-做决策:条件与循环 | 04 条件与循环]] | if/else 是表达式、loop/while/for |
| 5 | [[1入门/05-盒子与标签:所有权入门 | 05 所有权入门]] | move、clone、Copy trait |
| 6 | [[1入门/06-借东西:引用与借用 | 06 引用与借用]] | &T vs &mut T、借用规则 |
| 7 | [[1入门/07-自定义类型:结构体 | 07 结构体]] | struct、impl、关联函数 |
| 8 | [[1入门/08-多种选择:枚举与匹配 | 08 枚举与匹配]] | enum、Option、match 穷尽性 |
| 9 | [[1入门/09-装东西的容器:集合 | 09 集合]] | Vec/ HashMap/ HashSet |
| 10 | [[1入门/10-出错了怎么办:错误处理 | 10 错误处理]] | Result/ Option、? 操作符、panic |
| 11 | [[1入门/11-万能模板:泛型 | 11 泛型]] | 泛型函数/结构体、单态化 |
| 12 | [[1入门/12-共享行为:Trait入门 | 12 Trait 入门]] | trait 定义与实现、derive |
| 13 | [[1入门/13-引用有效期:生命周期入门 | 13 生命周期]] | 生命周期标注、编译器借用检查 |
| 14 | [[1入门/14-组织代码:模块与包 | 14 模块与包]] | mod/ use/ pub、crate 结构 |
语法学完后去力扣对应专题验证,能独立解决前 10 题即表示语法过关。
阶段二:原理深化(2-3 周)
| 顺序 | 文件 | 重点 |
|---|
| 15 | [[2深入/01-内存本质:从比特到指针 | 01 内存本质]] |
| 16 | [[2深入/02-所有权系统的计算机科学基础 | 02 所有权基础]] |
| 17 | [[2深入/03-引用与生命周期的底层实现 | 03 生命周期底层]] |
| 18 | [[2深入/04-类型系统的力量 | 04 类型系统]] |
| 19 | [[2深入/05-Trait系统的计算机科学 | 05 Trait 系统]] |
| 20 | [[2深入/06-智能指针的内存管理原理 | 06 智能指针]] |
| 21 | [[2深入/07-并发的硬件基础 | 07 并发硬件]] |
| 22 | [[2深入/08-异步编程的底层机制 | 08 异步底层]] |
| 23 | [[2深入/09-Unsafe-Rust的计算机科学边界 | 09 Unsafe Rust]] |
| 24 | [[2深入/10-编译器如何理解你的代码 | 10 编译器]] |
| 25 | [[2深入/11-宏系统的编译原理 | 11 宏系统]] |
阶段三:项目实战(选学,每项 3-5 天)
| 顺序 | 文件 | 技术栈 |
|---|
| 26 | [[3实践/01-简易计算器:从零到GUI | 01 计算器]] |
| 27 | [[3实践/02-学生管理系统:命令行工具 | 02 学生管理]] |
| 28 | [[3实践/03-工具栏管理工具:TUI入门 | 03 TUI 工具]] |
| 29 | [[3实践/04-音乐流媒体播放器 | 04 音乐播放]] |
| 30 | [[3实践/05-贪吃蛇游戏:从零开发 | 05 贪吃蛇]] |
阶段四:企业工程(选学)
| 主题 | 文件 |
|---|
| 工程化 | [[4工程/01-Cargo工程化与企业级构建 |
| 安全 | [[4工程/03-安全错误处理 |
| 网络/数据安全 | [[4工程/05-网络安全:零信任架构 |
| 并发/性能 | [[4工程/07-并发与异步安全 |
| 跨语言 | [[4工程/09-FFI与跨语言安全 |
| 嵌入式 | [[4工程/10-嵌入式与no_std企业应用 |
| 架构/实战 | [[4工程/11-企业级架构与设计模式 |
阶段五:C → Rust 重构(选学)
| 顺序 | 文件 | 重点 |
|---|
| 1 | [[5重构/01-C代码阅读理解方法论 | C 代码理解]] |
| 2 | [[5重构/02-简单C函数重构实战 | 简单函数]] |
| 3 | [[5重构/03-C项目结构重构 | 项目结构]] |
| 4 | [[5重构/04-开源C项目重构:小型 | 小型重构]] |
| 5 | [[5重构/05-开源C项目重构:中型 | 中型重构]] |
| 6 | [[5重构/06-重构方法论总结 | 方法论]] |
C ↔ Rust 对照学习
| 概念 | C | C++ | Rust |
|---|
| 堆分配 | malloc/free | new/delete | Box::new / RAII 自动释放 |
| 泛型 | _Generic 宏 | 模板 | 泛型 + trait bound |
| 多态 | 函数指针 | 虚函数 (vtable) | trait object (dyn Trait) |
| 错误处理 | 返回码 / errno | 异常 | Result<T, E> / ? |
| 模块化 | #include | #include + namespace | mod / use (真正的模块系统) |
| 并发 | pthread | std::thread | Send + Sync trait(编译期检查) |
| 字符串 | char* | std::string | &str / String |
与其他模块的关联
外部资源