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 周,根据兴趣选择方向
实践项目建议
- 基础项目:计算器、猜数字游戏、文本处理工具
- 进阶项目:命令行工具、简单 Web 服务、数据处理程序
- 高级项目:Web 框架、数据库、操作系统组件
学习资源
- 官方文档:The Rust Programming Language
- 练习平台:Rustlings
- 在线练习:Exercism Rust Track
- 社区:Rust 官方论坛
检查清单说明
- 未开始
- 已完成