学习路线

从环境、Cargo 和基础语法开始,逐步进入所有权、建模、标准库和项目实践。

环境与学习方式

  1. Rust 是什么

    理解 Rust 适合解决的问题,以及本教程的学习方式。

    beginner 15 分钟
  2. 第一个程序:Hello World

    运行最小 Rust 程序,认识 main 函数和 println! 宏。

    beginner 20 分钟
  3. Cargo 基础

    理解 Cargo 项目的目录、Cargo.toml 和常用命令。

    beginner 25 分钟

基础语法

  1. 变量、可变性与 shadowing

    理解 let、mut、const 和 shadowing 的差异。

    beginner 25 分钟
  2. 标量类型与复合类型

    认识整数、浮点、bool、char、tuple 和 array。

    beginner 30 分钟
  3. 函数、参数与返回值

    写出带参数、返回值和表达式函数体的 Rust 函数。

    beginner 25 分钟
  4. 控制流

    使用 if、loop、while 和 for 表达程序分支与重复。

    beginner 30 分钟

所有权、借用和生命周期

  1. 所有权与移动

    理解 Rust 的所有权规则、移动语义和 clone 的代价。

    beginner 30 分钟
  2. 借用与引用

    用 & 和 &mut 借用数据,掌握借用检查器的规则。

    beginner 30 分钟
  3. 切片

    用切片借用数组、Vec 和字符串的一段连续数据。

    beginner 25 分钟
  4. 生命周期入门

    用生命周期标注表达引用之间的存活关系。

    intermediate 30 分钟

复合类型与模式匹配

  1. 结构体与方法

    用 struct 给数据建模,用 impl 定义方法和关联函数。

    beginner 30 分钟
  2. 枚举与 Option

    用带数据的枚举建模多态状态,用 Option 表达可能为空。

    beginner 30 分钟
  3. 模式匹配

    用 match、if let、守卫和解构写出清晰的分支逻辑。

    intermediate 30 分钟

标准库与错误处理

  1. 常用集合

    掌握 Vec、HashMap 和 String 的常见用法。

    beginner 30 分钟
  2. Result 与错误处理

    用 Result 和 ? 运算符传播可恢复错误。

    intermediate 30 分钟
  3. 自定义错误类型

    用枚举定义错误,实现 Display 和 Error trait。

    intermediate 30 分钟

泛型、trait 与闭包

  1. 泛型

    用泛型参数写出适用于多种类型的函数和结构体。

    intermediate 30 分钟
  2. trait 与共享行为

    用 trait 定义共享接口和默认方法。

    intermediate 30 分钟
  3. trait 对象与 dyn

    用 Box<dyn Trait> 在运行时存放不同类型。

    intermediate 25 分钟
  4. 像 class 一样思考:Rust 的面向对象

    Rust 没有 class,却能用 struct + impl + trait 表达封装、构造、接口、多态与继承。

    intermediate 30 分钟
  5. 闭包

    理解闭包如何捕获环境,以及 Fn、FnMut、FnOnce 的区别。

    intermediate 30 分钟

迭代器与函数式

  1. 迭代器与适配器

    用 map、filter、collect、fold 写出声明式的数据处理。

    intermediate 30 分钟
  2. 自定义迭代器

    为自己的类型实现 Iterator trait,复用全部适配器。

    intermediate 25 分钟

智能指针与内部可变性

  1. Box 与递归类型

    用 Box<T> 把数据放到堆上,定义递归数据结构。

    intermediate 25 分钟
  2. Rc 共享所有权

    用 Rc<T> 让多个所有者共享同一份只读数据。

    intermediate 25 分钟
  3. RefCell 与内部可变性

    用 RefCell<T> 在只持有共享引用时修改数据。

    intermediate 30 分钟

并发与多线程

  1. 线程

    用 thread::spawn 创建线程,用 join 收集结果。

    intermediate 30 分钟
  2. channel 消息传递

    用 mpsc channel 在线程间安全传递数据。

    intermediate 25 分钟
  3. 共享状态:Arc 与 Mutex

    用 Arc<Mutex<T>> 在多线程间安全共享可变数据。

    intermediate 30 分钟

模块系统、crate 与 workspace

  1. 模块系统

    用 mod、pub 和 use 组织代码,控制可见性。

    intermediate 30 分钟
  2. 库 crate 与 workspace

    区分 lib 与 bin,用 workspace 管理多个 crate。

    intermediate 25 分钟

测试、文档与工程质量

  1. 测试

    用单元测试和集成测试保证代码正确。

    intermediate 30 分钟
  2. 文档与文档测试

    用 /// 写文档,让示例代码同时成为测试。

    intermediate 25 分钟

异步编程

  1. async/await 基础

    用 async/await 和 tokio 运行时编写异步代码。

    advanced 35 分钟
  2. 并发任务

    用 join! 和 spawn 让多个异步任务并发执行。

    advanced 30 分钟

常用生态库

  1. serde:序列化与反序列化

    用 serde 和 serde_json 在结构体与 JSON 之间转换。

    intermediate 30 分钟
  2. anyhow 与 thiserror

    用 thiserror 定义库错误,用 anyhow 聚合应用错误。

    intermediate 30 分钟
  3. clap:命令行参数解析

    用 clap 的派生宏构建带校验的命令行接口。

    intermediate 30 分钟
  4. 引用第三方包:用 rand 生成随机数

    学会在 Cargo.toml 添加依赖,并用 rand 生成随机数、骰子与随机密码。

    intermediate 20 分钟
  5. 用 uuid 生成唯一标识

    用 uuid 生成 v4 随机 UUID、解析与格式化,给实体分配唯一 ID。

    intermediate 15 分钟
  6. 用 chrono 处理日期与时间

    用 chrono 解析、格式化日期时间,并做日期加减与差值计算。

    intermediate 20 分钟
  7. 用 sha2 计算哈希

    用 sha2 计算 SHA-256/512 摘要,并用 hex 编码与校验数据完整性。

    intermediate 15 分钟
  8. 用 regex 处理文本

    用 regex 做匹配、查找、捕获组与替换,从文本里提取结构化信息。

    intermediate 20 分钟
  9. 用 rayon 做数据并行

    把迭代器链换成 rayon 的并行迭代器,几乎零改动地利用多核加速。

    intermediate 20 分钟
  10. 用 itertools 增强迭代器

    用 itertools 的 unique / counts / chunk_by / sorted / join 等扩展标准迭代器。

    intermediate 20 分钟

Web 与数据库

  1. Web 服务:axum

    用 axum 构建路由和 JSON 接口,并用 oneshot 测试。

    advanced 35 分钟
  2. 数据库:SQLite

    用 rusqlite 操作内置 SQLite,完成增查改。

    advanced 30 分钟

宏、unsafe 与 FFI

  1. 声明宏 macro_rules!

    用 macro_rules! 在编译期生成重复代码。

    advanced 30 分钟
  2. unsafe 基础

    理解 unsafe 的能力边界,以及如何封装成安全接口。

    advanced 30 分钟
  3. FFI:与 C 互操作

    用 extern "C" 调用 C 函数,并把 Rust 函数导出给 C。

    advanced 30 分钟

真实项目

  1. 真实项目:命令行待办应用

    综合结构体、错误处理、serde 与 clap,做一个可持久化的待办 CLI。

    advanced 45 分钟