Rust 系统学习路线图

第一部分:Rust 基础入门

第 1 章 环境搭建与工具链

  • 1.1 安装 Rust(rustup、cargo)
  • 1.2 IDE/编辑器配置(VS Code、RustRover、Vim)
  • 1.3 第一个 Rust 程序(Hello World)
  • 1.4 Cargo 项目管理基础
  • 1.5 rustc 编译器基础用法

第 2 章 基础语法与数据类型

  • 2.1 变量与可变性(let、mut)
  • 2.2 常量与静态变量(const、static)
  • 2.3 数据类型概览
  • 2.4 标量类型(整数、浮点数、布尔、字符)
  • 2.5 复合类型(元组、数组)
  • 2.6 类型推断与类型注解
  • 2.7 类型转换(as、From/Into trait)

第 3 章 函数与控制流

  • 3.1 函数定义与调用
  • 3.2 函数参数与返回值
  • 3.3 表达式与语句
  • 3.4 条件控制(if、if let)
  • 3.5 循环结构(loop、while、for)
  • 3.6 模式匹配基础(match)
  • 3.7 分支控制(break、continue、return)

第 4 章 所有权系统(核心概念)

  • 4.1 所有权规则
  • 4.2 变量作用域
  • 4.3 移动语义(Move)
  • 4.4 克隆(Clone)
  • 4.5 栈与堆内存
  • 4.6 函数与所有权传递
  • 4.7 返回值与所有权

第 5 章 引用与借用

  • 5.1 引用基础(&、&mut)
  • 5.2 借用规则
  • 5.3 可变引用与不可变引用
  • 5.4 引用的作用域
  • 5.5 悬垂引用问题
  • 5.6 引用与函数参数

第 6 章 切片类型

  • 6.1 字符串切片(&str)
  • 6.2 数组切片(&[T])
  • 6.3 切片的内部表示
  • 6.4 切片操作与方法
  • 6.5 字符串字面量与 String 类型

第二部分:结构化编程

第 7 章 结构体

  • 7.1 结构体定义与实例化
  • 7.2 字段初始化简写语法
  • 7.3 结构体更新语法
  • 7.4 元组结构体
  • 7.5 类单元结构体
  • 7.6 结构体的所有权
  • 7.7 结构体方法与关联函数(impl)
  • 7.8 多个 impl 块

第 8 章 枚举与模式匹配

  • 8.1 枚举定义与值
  • 8.2 枚举成员的数据
  • 8.3 Option 枚举与空值处理
  • 8.4 Result 枚举与错误处理
  • 8.5 match 控制流运算符
  • 8.6 if let 简洁控制流
  • 8.7 while let 循环
  • 8.8 模式匹配详解

第 9 章 集合类型

  • 9.1 动态数组(Vec
  • 9.2 字符串(String)
  • 9.3 哈希映射(HashMap<K, V>)
  • 9.4 其他集合类型(BTreeMap、HashSet)
  • 9.5 集合的迭代与操作
  • 9.6 集合的所有权问题

第 10 章 错误处理

  • 10.1 不可恢复错误(panic!)
  • 10.2 可恢复错误(Result<T, E>)
  • 10.3 错误传播(? 运算符)
  • 10.4 自定义错误类型
  • 10.5 错误处理最佳实践
  • 10.6 何时使用 panic! vs Result

第三部分:高级特性

第 11 章 泛型、Trait 与生命周期

  • 11.1 泛型函数
  • 11.2 泛型结构体
  • 11.3 泛型枚举
  • 11.4 泛型方法
  • 11.5 Trait 定义与实现
  • 11.6 默认实现
  • 11.7 Trait 作为参数和返回值
  • 11.8 Trait bound
  • 11.9 where 子句
  • 11.10 生命周期参数
  • 11.11 生命周期标注语法
  • 11.12 函数中的生命周期
  • 11.13 结构体生命周期
  • 11.14 生命周期省略规则
  • 11.15 静态生命周期

第 12 章 迭代器与闭包

  • 12.1 闭包语法与使用
  • 12.2 闭包类型推断
  • 12.3 闭包捕获环境
  • 12.4 Fn、FnMut、FnOnce trait
  • 12.5 迭代器基础
  • 12.6 Iterator trait
  • 12.7 迭代器适配器
  • 12.8 消费适配器
  • 12.9 自定义迭代器
  • 12.10 性能对比:循环 vs 迭代器

第 13 章 Cargo 与包管理

  • 13.1 包(Package)与 Crate
  • 13.2 模块系统(mod)
  • 13.3 路径引用(use)
  • 13.4 公有与私有(pub)
  • 13.5 将模块分离到不同文件
  • 13.6 依赖管理(Cargo.toml)
  • 13.7 工作空间(Workspace)
  • 13.8 发布到 crates.io
  • 13.9 版本管理

第 14 章 自动化测试

  • 14.1 编写测试函数
  • 14.2 测试断言宏
  • 14.3 should_panic 测试
  • 14.4 Result<T, E> 在测试中的使用
  • 14.5 控制测试运行
  • 14.6 测试组织结构
  • 14.7 单元测试
  • 14.8 集成测试
  • 14.9 文档测试

第 15 章 智能指针

  • 15.1 Box 堆上数据
  • 15.2 Deref trait 与解引用
  • 15.3 Drop trait 与析构
  • 15.4 Rc 引用计数
  • 15.5 RefCell 内部可变性
  • 15.6 Rc 与 RefCell 结合
  • 15.7 引用循环与内存泄漏
  • 15.8 Weak 弱引用

第四部分:并发编程

第 16 章 并发基础

  • 16.1 线程创建与管理
  • 16.2 move 闭包
  • 16.3 线程间通信:消息传递
  • 16.4 通道(Channel)
  • 16.5 共享状态并发
  • 16.6 互斥器(Mutex)
  • 16.7 原子类型(Atomic)
  • 16.8 Send 与 Sync trait
  • 16.9 并发安全

第 17 章 异步编程

  • 17.1 async/await 语法
  • 17.2 Future trait
  • 17.3 异步运行时(tokio、async-std)
  • 17.4 异步函数与异步块
  • 17.5 Pin 与 Unpin
  • 17.6 异步流(Stream)
  • 17.7 异步错误处理
  • 17.8 异步并发模式

第五部分:系统编程与高级主题

第 18 章 不安全 Rust

  • 18.1 unsafe 关键字
  • 18.2 解引用裸指针
  • 18.3 调用不安全函数
  • 18.4 访问可变静态变量
  • 18.5 实现不安全 trait
  • 18.6 访问联合体字段
  • 18.7 何时使用不安全代码

第 19 章 高级 Trait

  • 19.1 关联类型
  • 19.2 默认泛型参数
  • 19.3 完全限定语法
  • 19.4 父 trait
  • 19.5 newtype 模式
  • 19.6 类型别名
  • 19.7 Never 类型(!)
  • 19.8 动态大小类型

第 20 章 高级类型与函数

  • 20.1 函数指针
  • 20.2 返回闭包
  • 20.3 高阶函数
  • 20.4 宏基础
  • 20.5 声明宏(macro_rules!)
  • 20.6 过程宏
  • 20.7 属性宏
  • 20.8 派生宏

第 21 章 内存管理深入

  • 21.1 内存布局
  • 21.2 内存对齐
  • 21.3 零成本抽象
  • 21.4 自定义分配器
  • 21.5 内存安全保证
  • 21.6 性能优化技巧

第六部分:实战项目与生态系统

第 22 章 Web 开发

  • 22.1 HTTP 客户端(reqwest)
  • 22.2 Web 框架(axum、warp、actix-web)
  • 22.3 序列化与反序列化(serde)
  • 22.4 JSON 处理
  • 22.5 数据库操作(sqlx、diesel)
  • 22.6 模板引擎

第 23 章 系统编程

  • 23.1 文件 I/O 操作
  • 23.2 网络编程
  • 23.3 系统调用
  • 23.4 跨平台开发
  • 23.5 C 语言互操作(FFI)
  • 23.6 性能分析与优化

第 24 章 命令行工具开发

  • 24.1 参数解析(clap)
  • 24.2 错误处理最佳实践
  • 24.3 配置文件处理
  • 24.4 日志记录(log、env_logger)
  • 24.5 测试命令行程序
  • 24.6 发布与分发

第 25 章 嵌入式开发

  • 25.1 no_std 环境
  • 25.2 嵌入式 HAL
  • 25.3 实时系统编程
  • 25.4 内存受限环境
  • 25.5 硬件抽象层

学习建议

学习节奏

  • 基础阶段(第 1-6 章):建议 2-3 周,重点理解所有权系统
  • 进阶阶段(第 7-15 章):建议 4-6 周,多做练习项目
  • 高级阶段(第 16-21 章):建议 3-4 周,深入理解并发和高级特性
  • 实战阶段(第 22-25 章):建议 4-8 周,根据兴趣选择方向

实践项目建议

  1. 基础项目:计算器、猜数字游戏、文本处理工具
  2. 进阶项目:命令行工具、简单 Web 服务、数据处理程序
  3. 高级项目:Web 框架、数据库、操作系统组件

学习资源

检查清单说明

  • 未开始
  • 已完成