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-简易计算器:从零到GUI01 计算器]]
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 对照学习

概念CC++Rust
堆分配malloc/freenew/deleteBox::new / RAII 自动释放
泛型_Generic模板泛型 + trait bound
多态函数指针虚函数 (vtable)trait object (dyn Trait)
错误处理返回码 / errno异常Result<T, E> / ?
模块化#include#include + namespacemod / use (真正的模块系统)
并发pthreadstd::threadSend + Sync trait(编译期检查)
字符串char*std::string&str / String

与其他模块的关联


外部资源