100 个练习吃透 Rust:零基础到并发的完整路线图
【免费下载链接】100-exercises-to-learn-rustA self-paced course to learn Rust, one exercise at a time.项目地址: https://gitcode.com/GitHub_Trending/10/100-exercises-to-learn-rust
100-exercises-to-learn-rust 是把 Rust 学习拆成 100 道 Rust 练习的开源课程项目。每个练习目录都是一个可独立编译的 Cargo 项目,你靠cargo test是否通过来判断自己写得对不对。它适合零基础的开发者,也适合想系统补上所有权、并发短板的工程师。学法只有一条:按模块顺序做题,做完一关再进下一关。
🚀 快速开始:三步跑通第一个 Rust 练习
第一步,装好工具链。没有 rustup 的机器按官方脚本安装,已经装好的直接升级:
rustup update rustc --version cargo --version第二步,拉取课程代码:
git clone https://gitcode.com/GitHub_Trending/10/100-exercises-to-learn-rust cd 100-exercises-to-learn-rust第三步,进入第一道练习补代码。题目里会用TODO、todo!()或__标出要你填空的位置,填完立刻自检:
cd exercises/01_intro/00_welcome && cargo test测试转绿,第一关就过了。编辑器建议配带 Rust 语言服务的(VS Code 装 rust-analyzer,或直接用 RustRover),类型错误和建议能实时看到,少走很多弯路。
📦 8 大模块的递进学习路径,一图看懂
这套 Rust 入门教程按主题切成 8 大模块,每个模块 8~16 道小练习,后一关依赖前一关的积累:
| 模块 | 主题 | 覆盖的 Rust 概念 |
|---|---|---|
| 01_intro | 初识 Rust | 语法、注释、测试 |
| 02_basic_calculator | 计算器 | 整数、变量、if/else、while/for、溢出与类型转换 |
| 03_ticket_v1 | 票务 v1 | 结构体、模块、封装、所有权、栈与堆、引用、析构 |
| 04_traits | 特性系统 | trait、孤儿规则、运算符重载、derive、trait 约束、Deref/Sized/From、Clone/Copy/Drop |
| 05_ticket_v2 | 票务 v2 | 枚举、match、Option 与 Result、错误枚举、Error trait、thiserror、TryFrom |
| 06_ticket_management | 集合管理 | 数组、Vec、迭代器、生命周期、impl Trait、切片、Index、HashMap、BTreeMap |
| 07_threads | 多线程并发 | 线程创建、'static、channel、内部可变性、Mutex/Arc/RwLock、Send/Sync |
| 08_futures | 异步编程 | async fn、spawn、runtime、Future trait、阻塞、取消 |
注意 03 与 05 是同一个票务领域的两个版本,主线分别是所有权和错误处理。Rust 所有权怎么练?把这两章的练习重做一遍,答案就出来了。
🗂️ 仓库目录结构速览:练习与文档在哪
根目录的Cargo.toml声明了整个 workspace,exercises/下的每个子目录都是独立 Cargo 项目:
100-exercises-to-learn-rust/ ├── exercises/ # 8 大模块 100 道练习,每个子目录独立可编译 ├── book/ # 配套 mdbook 理论文档,与练习一一对应 ├── helpers/ # 共享代码(common、ticket_fields) └── Cargo.toml # workspace 定义举两个真实路径:exercises/03_ticket_v1/12_outro/tests/integration.rs 是票务 v1 收官的集成测试,能看到一个完整的Order类型被逐条断言验证;理论部分集中在 book/src/,每个练习对应一份 md 讲解。票务领域的公共字段代码则放在 helpers/,前几章的练习会直接复用它。
✅ Rust 练习项目的四条高效学法
- 按顺序推进:练习之间有明确的依赖链,跳过前面的题,后面的题读起来会非常费劲。
- 用 cargo test 自检:每道练习内置单元测试,测试断言不许改——它就是你本关的验收标准。
- 卡住先查文档:book/src/ 下每个练习都有对应讲解,做题前读原理或做完后补原理,都行,关键是读了。
- 先动手再看参考:自己先想十分钟,实在卡住再查仓库 solutions 分支里的参考答案,看完改回去自己重做,别让抄完就忘。
从零开始学 Rust 的人最容易犯的错误是"看会了",而这个项目的测试机制就是治这个病的:测试没绿之前,别翻到下一关。
🛠️ 编译报错、测试失败、性能存疑:分情况排查
编译错误,多发生在所有权/借用/生命周期章节:
- 认真读完编译器给出的解释,Rust 的报错基本会直接指出修法方向;
- 看行号和周边代码,真正的问题往往在借用发生处,而不是报错指到的行;
- 对照 book/src/ 对应章节,确认这条规则你学的是不是最新版。
测试失败:
- 先跑
cargo test -- --nocapture拿到完整输出; - 把断言期望值和实际返回值逐项对比,差异通常就在一个数值或一次状态变更上;
- 实在看不出,在关键位置插
println!跟踪执行流,调试完删掉。
性能存疑:
- 用
cargo run --release再测一次,debug 模式有 overflow-checks 等差异,会扭曲结果; - 定位热点后,如果是并发吞吐问题,参考 exercises/07_threads/ 里 channel 和锁的写法。
🌟 练完 100 道之后的三条出路
- 开源贡献:挑一个你常用的 Rust 项目,从修一个小 bug、补一段文档开始,顺便熟悉 review 流程;
- 个人项目:把学到的东西用在 CLI 工具或小 Web 服务上,自己走一遍从需求到上线的完整链路;
- 读标准库源码:拿 Vec、HashMap 这类数据结构跟一遍实现,到这里所有权和借用的规则基本不会再卡你。
先跑通 01_intro,再谈精通
每做完一个模块,把它的 outro 集成测试跑一遍,全绿才算过关。现在就打开终端:克隆仓库、进入第一关、让cargo test转绿。
【免费下载链接】100-exercises-to-learn-rustA self-paced course to learn Rust, one exercise at a time.项目地址: https://gitcode.com/GitHub_Trending/10/100-exercises-to-learn-rust
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考