跳转至

Rust 实战教学

前言

  换了新部门后工作暂闲,便在刷算法之余重拾了 Rust。此前几度“从入门到放弃”,这次凭着“AI 在手,天下我有”的信心 😄 重读《Rust 程序设计语言》,居然越学越有兴趣,过完基础就一头扎进了实战项目。这份指南便是此番学习的记录,留作日后回看,也希望帮到同样在路上的你。


目录导航

篇 文件 项目 对应章节
基础语法 01_基础语法篇.md 1. 猜数字、2. 计算器、3. 文件统计 第1-4章
结构体与集合 02_结构体与集合篇.md 4. 待办、5. 通讯录、6. 表达式求值器 第5-6章
模块系统 03_模块系统篇.md 7. 几何计算器 第7章
第三方 crate 04_第三方crate篇.md 8. HTTP客户端、9. 笔记管理器 第8章
错误处理 05_错误处理篇.md 10. 银行账户管理器 第9章
泛型与 Trait 06_泛型与Trait篇.md 11. 形状库 第10章
测试 07_测试篇.md 12. 字符串工具库 第11章
文件与命令行 08_文件与命令行篇.md 13. 迷你 grep 第12章
闭包与迭代器 09_闭包与迭代器篇.md 14. 文本分析管道 第13章
智能指针 10_智能指针篇.md 15. 双向链表 第15章
并发 11_并发篇.md 16. 多线程下载器 第16章
面向对象 12_面向对象篇.md 17. 博客文章状态机 第17章
网络与线程池 13_网络与线程池篇.md 18. 多线程Web服务器 第20章

篇 文件 项目 对应章节
基础语法 01_基础语法篇.md 1. 猜数字、2. 计算器、3. 文件统计 第1-4章
结构体与集合 02_结构体与集合篇.md 4. 待办、5. 通讯录、6. 表达式求值器 第5-6章
模块系统 03_模块系统篇.md 7. 几何计算器
📦 进阶:geometry 目录模块版(mod.rs、pub use 重导出、super/crate)
第7章
第三方 crate 04_第三方crate篇.md 8. HTTP客户端、9. 笔记管理器、10. 待办持久化版(4的进阶)、11. 通讯录JSON版(5的进阶)
📦 进阶:notes JSON+标签版
第7-8章
错误处理 05_错误处理篇.md 12. 银行账户管理器 第9章
泛型与 Trait 06_泛型与Trait篇.md 13. 形状库
📦 进阶:shapes 实战版(单方法 trait Area、海伦公式、纯库+测试)
第10章
测试 07_测试篇.md 14. 字符串工具库
📦 进阶:strtools(capitalize/camel_case、word_count 词频表语义)
第11章
文件与命令行 08_文件与命令行篇.md 15. 迷你 grep
📦 进阶:精简版 main(Result main vs Config/run 对比)
第12章
闭包与迭代器 09_闭包与迭代器篇.md 16. 文本分析管道
📦 进阶:text_analyzer 实战版(--min-len 标志解析、Option 化 API)
第13章
智能指针 10_智能指针篇.md 17. 双向链表 第15章
并发 11_并发篇.md 18. 多线程下载器 第16章
面向对象 12_面向对象篇.md 19. 博客文章状态机 第17章
网络与线程池 13_网络与线程池篇.md 20. 多线程Web服务器 第20章

学习路线总览

阶段 项目 对应章节 核心知识点
基础语法 1. 猜数字游戏 第1-2章 变量、输入输出、loop、match、Ordering
基础语法 2. 命令行计算器 第3章 函数、类型、模式匹配、命令行参数
所有权 3. 文件行数统计器 第4章 字符串、文件读取、迭代器
结构体 4. 待办事项管理器 第5章 结构体、Vec、方法、交互
枚举/集合 5. 联系人通讯录 第6章 枚举、HashMap、结构体
枚举进阶 6. 表达式求值器 第6章延伸 携带数据的枚举、递归下降解析、peekable
模块系统 7. 几何计算器 第7章 package/crate/module、lib 与 bin
生态/crate 8. 简单HTTP客户端 第8章 引入第三方 crate(reqwest)
生态/crate 9. 命令行笔记管理器 第8章 文件持久化、增删查
错误处理 10. 银行账户管理器 第9章 Result、自定义错误、?、JSON
泛型/特征 11. 形状库 第10章 trait、泛型、生命周期
测试 12. 字符串工具库 第11章 单元测试、集成测试
I/O 13. 迷你 grep 第12章 命令行解析、文件、环境变量
闭包迭代器 14. 文本分析管道 第13章 闭包、迭代器、HashMap
智能指针 15. 双向链表 第15章 Box、Rc、RefCell、Weak
并发 16. 多线程下载器 第16章 thread、channel、Arc、Mutex
面向对象 17. 博客文章状态机 第17章 trait 对象、状态模式
网络+线程池 18. 多线程Web服务器 第20章 TcpListener、线程池、优雅关闭

依赖管理(所有项目通用)

环境:WSL (Ubuntu) + Zed 编辑器 + Cargo。所有命令在 WSL 终端执行。

动手写代码前,先掌握几个必用的工具命令(后续每个项目都会用到)。

创建新项目

cargo new 项目名        # 创建二进制项目(bin)
cargo new 项目名 --lib  # 创建库项目(lib,供他人调用)

创建后会生成目录结构:

项目名/
├── Cargo.toml   ← 项目配置与依赖清单
└── src/
    └── main.rs  ← 二进制入口(bin)或 lib.rs(lib)

添加依赖:cargo add(推荐)

不要手动编辑 Cargo.toml 写版本号,用 cargo add 会自动查询并写入最新版本:

cargo add rand        # 自动添加 rand 的最新版本
cargo add reqwest     # 自动添加 reqwest 的最新版本
cargo add serde --features derive   # 带特性添加
cargo add serde serde_json          # 一次添加多个

不确定要用哪个 crate,或想知道某个包的最新版本,用 cargo search:

cargo search rand          # 搜索 rand 并显示最新版本
# rand = "0.10.x"          ← 显示可用的最新版本号
cargo search http
cargo search 关键词

版本号规则

Cargo.toml 中的 rand = "0.10" 表示"兼容 0.10.x 的最新补丁版本"(语义化版本 SemVer)。cargo update 可升级到允许范围内的最新版。

💡 提示:文档中的版本号仅作示例。请以 cargo search 查询到的实际最新版本为准,用 cargo add 添加即可,不必手动改版本号。


结语

18 个项目基本对应书籍所有章节的核心知识,覆盖:所有权与借用、结构体枚举、递归下降解析、模块系统、错误处理、泛型与 trait、生命周期、测试、闭包迭代器、智能指针、并发、状态模式、网络编程。每个项目都能独立运行,建议按顺序重做一遍巩固理解。

参考:《Rust 程序设计语言》

评论