跳到主要内容

Roadmap

Rust 小白学习路线规划(2026 版)——从零到业界工程化实践

Rust 的学习曲线确实陡峭(尤其是所有权和异步),但一旦掌握,你会爱上它的“编译器即老师”和零运行时开销的安全性。2026 年 Rust 生态已非常成熟:Tokio + Axum 是异步/Web 事实标准,thiserror + anyhow 是错误处理标配,Cargo workspaces + tracing 是生产级标配。

假设:你有其他语言基础(Python/Go/C++ 最好),每天能投入 1-2 小时。总时长:3-6 个月能独立写生产级代码(CLI/Web/Library),边学边做项目最重要。

必备工具(第 0 天)

  • 安装 rustup(官方推荐,自动管理 stable/beta/nightly)
  • VS Code + rust-analyzer 插件(自动补全、借用检查、跳转定义)
  • 命令:cargo new my_project --bin / cargo run / cargo test / cargo clippy

阶段 1:基础语法 + 所有权(1-2 周,Rust 最难的一关)

核心:数据类型 → 所有权 → 借用 → 生命周期(borrow checker 会疯狂报错,但它在教你写安全代码)。

必学内容

  • 基本类型(i32、f64、bool、char)、String vs &str、Vec、HashMap
  • 变量可变性、函数、if/loop/match、结构体初步
  • Ownership 三规则、借用(& / &mut)、Slice、Lifetimes('a 基础)
  • Cargo 项目结构

推荐资源(优先中文):

实践项目:猜数字游戏 / 简单计算器 CLI
里程碑:能独立解决 80% 的 borrow checker 错误。


阶段 2:结构体、枚举、模块与包管理(1 周)

必学内容

  • Struct / Enum / impl 块 / match 模式匹配
  • 模块系统(mod、pub、use、crate)
  • Cargo.toml(dependencies、[package])、多文件项目
  • 集合类型进阶 + Iterator(for 循环、.map/.filter/.collect)

资源:The Book 第 5-8 章
实践:重构阶段 1 项目成多模块(lib + bin),实现 Todo List(Add/List/Remove)。


阶段 3:错误处理 + 泛型 + Trait(1-2 周)

必学内容(业界最常用):

  • Option / Result / ? 运算符 / panic!
  • 业界实践:thiserror(定义错误类型)+ anyhow(? 传播 + Context)——几乎所有生产项目都用
  • Trait(定义行为)、Generics、Associated Types、Default / Debug / Clone 等派生宏
  • 闭包 + Iterator 高级用法

资源:The Book 第 9-10 章 + thiserror/anyhow 官方文档
实践:在 Todo 项目里加入文件读写错误处理(JSON 持久化)。


阶段 4:测试 + 文档 + 工具链(1 周,工程化起点)

必学内容(生产必备):

  • #[test] / #[cfg(test)] / 集成测试(tests/ 目录)
  • 文档测试(rust 在文档里)
  • 业界实践:cargo test、cargo llvm-cov(覆盖率)、proptest(属性测试,后续加)
  • Clippy(cargo clippy --fix 自动修复)、Rustfmt、cargo expand(展开宏)
  • rustdoc 生成 API 文档

资源:The Book 第 11 章
里程碑:所有代码 100% 测试覆盖 + cargo clippy 通过零警告。


阶段 5:异步编程(2 周,第二大难点)

必学内容

  • async/await、Future trait
  • Tokio(runtime,2026 年绝对主流)——#[tokio::main] / tokio::spawn / tokio::select!
  • 异步错误处理(? 在 async fn 里)
  • Stream、mpsc 通道、async Trait(2024 edition 后原生支持,或用 async-trait)
  • 取消、安全关闭任务

资源

实践:把 Todo List 改成异步版本(支持并发任务),或写一个异步 HTTP 客户端。


阶段 6:并发、安全、性能 + 高级主题(1-2 周)

必学内容

  • 线程 + Arc<Mutex<T>> / RwLock / 通道(std::sync::mpsc vs tokio::sync)
  • Rayon(数据并行,简单高效)
  • Smart Pointer(Box、Rc、Arc、Cow)
  • 生命周期进阶、Unsafe(只在必要时用)
  • 性能:criterion bench、cargo flamegraph

资源:The Book 第 13、16、20 章 + Rustonomicon(unsafe 进阶)


阶段 7:业界工程化实践(持续贯穿项目)

这是你从“能跑”到“生产可用”的关键。

核心实践(2026 年主流):

  • 项目结构:Cargo workspaces(多 crate)、features(可选依赖)
  • 日志/追踪:tracing + tracing-subscriber
  • CLI:clap v4(derive 宏)
  • 序列化:serde + serde_json / toml
  • Web/后端(推荐路径):Axum(轻量高性能)+ Tower + SQLx(数据库)+ JWT(auth)
  • 配置/环境:figment 或 config crate
  • 依赖安全:cargo-deny(审计)、cargo audit
  • CI/CD:GitHub Actions(rust.yml 模板,自动 test + clippy + build)
  • 发布:SemVer、CHANGELOG、crates.io publish、cargo publish
  • 文档:README.md + examples/ + 完整 rustdoc
  • 其他:tracing + opentelemetry(生产可观测性)

推荐学习资料


项目驱动路线(强烈推荐,每阶段结束后立刻做)

  1. CLI Todo(阶段 2-4)——clap + serde + thiserror
  2. 异步 CLI / TUI(阶段 5)——ratatui 或异步文件处理
  3. Web API 服务(阶段 5-7)——Axum + Tokio + SQLx + tracing(部署到 Docker)
  4. 可发布 Library(阶段 7)——发布到 crates.io(例如一个配置解析库)
  5. 开源贡献——在 GitHub 找 “good first issue” 的 Rust 项目(Axum、Tokio、serde 等)

学习 Tips(避坑)

  • 编译器错误就是教材——不要跳过,读完再改。
  • 不要只看不练,用 AI(Grok/Claude)解释报错或重构代码。
  • 每天 30 分钟 Rustlings + 1 小时项目。
  • 社区:Rust 中文社区(微信群/B站搜索 “Rust 中文”)、r/rust、Rust Discord、RustChina。
  • 避免常见坑:不要急着学 Web 框架,先把所有权和 async 吃透;生产永远用 stable 通道。
  • 进阶方向(6 个月后):WASM、嵌入式、无锁数据结构、FFI。

按照这个路线走,3 个月你就能写出让面试官惊艳的代码,6 个月就能参与真实生产项目。Rust 社区超级友好,遇到卡点直接贴编译器错误问就行。

开始吧!rustup default stable && cargo new hello_rust --bin
第一步:今天就把 The Book 第 1 章 + Rustlings 跑起来!

有任何阶段卡住了,随时贴代码/错误来问我,我可以帮你 debug 或给出业界最佳实践。加油,Rustacean!🦀

要学 Tokio,还需不需要看 The Book 的异步内容?

强烈建议不要完全跳过 The Book 的异步章节(通常是 Chapter 17:Async and Await,或对应中文版的第 17 章)。

理由如下:

  • The Book 的异步章节主要讲解 Rust 异步编程的核心概念Future trait、 async fn / await 语法、 Pin 的基本概念、为什么需要 runtime 等。这些是语言层面的基础,不是特定库的内容。
  • Tokio 教程(https://tokio.rs/tokio/tutorial)假设你已经理解这些基础。它直接教你如何用 #[tokio::main]tokio::spawn、通道、select! 等,但如果你连 await 为什么能工作、Future 是怎么被轮询的都不清楚,上手时会非常迷茫(尤其是遇到 pinning、waker、cancellation safety 等坑时)。
  • 2026 年情况依然如此:The Book 的 async 章节短而精,讲概念;Tokio 教程讲实际使用。两者互补,而不是替代。

实际推荐顺序(最省时间且少踩坑):

  1. 把 The Book 异步章节完整读一遍(花 1-2 天),重点理解 async/await 如何工作、Future 的状态机本质。
  2. 立即转到 Tokio Tutorial(强烈推荐从头到尾做一遍),边读边敲代码。
  3. 必要时再补充官方 Async Bookhttps://rust-lang.github.io/async-book/)的前半部分(beginner guide),它比 The Book 更详细地讲解 async 实践。

这样学效率最高:概念 + 实战快速结合。


可以跳过 The Book 的哪些章节?(直接学习第三方库/工程实践)

The Book 不是必须从头到尾按顺序读完,尤其是你已经过了所有权/借用难关、想快速进入工程化(Tokio/Axum 等)时。以下是 2026 年社区共识的可跳过或延迟章节:

可以安全跳过或只快速浏览的章节(等项目中遇到问题再回头补):

  • Chapter 11:Testing —— 测试基础很重要,但你可以先用 #[test] 简单写,后面项目里自然会深入。Cargo test + 集成测试在实际写代码时学更快。
  • Chapter 12:Command Line Programs(I/O 项目)—— CLI 部分可以等你学 clap 时再看。
  • Chapter 14:More about Cargo and Crates.io —— 发布 crate 的细节,先用 Cargo 基本功能即可,后面发布库时再补。
  • Chapter 15:Smart Pointers(Box、Rc、Arc 等)—— 基础部分要看(尤其是 Arc<Mutex> 用于并发),但高级用法(如 Deref、Drop)可以后面补。
  • Chapter 18:Object Oriented Programming Features —— Rust 不鼓励传统 OOP,这章概念性强,可以跳或快速扫。
  • Chapter 19:Patterns and Matching 的高级模式 —— 基础 match 够用,复杂模式匹配在项目中自然学会。
  • Chapter 20:Advanced Lifetimes —— 生命周期基础必须掌握,高级场景(如 'static + async)等写异步代码时再深挖。
  • Appendix 部分 大多可以跳(除非特定需求)。

必须认真学的核心章节(打好地基,不能跳):

  • Chapters 1-10(尤其是 3-6:所有权、结构体、枚举、模块;7-8:集合、错误处理;9-10:泛型、Trait)
  • Chapter 13:Functional Language Features(闭包、Iterator)—— 这在 async 代码里到处都是(.map().filter()、stream 等)
  • Chapter 16:Fearless Concurrency(线程、通道、Arc<Mutex>)—— 异步前理解同步并发非常有帮助,避免混淆
  • Chapter 17:Async(不能跳)

总结跳过策略

  • 前 10 章 + 13 + 16 + 17 是最小必读集(很多开发者反馈读到这里就能开始做小项目)。
  • 剩余章节当作参考手册:写项目时遇到具体问题(比如想用 Cow、智能指针高级用法、宏等),再回去针对性阅读对应章节。
  • 很多工程化教程(Axum 项目、Tokio 项目)都明确说:“The Book Chapters 1-10 足够”。

推荐的实际学习路径(针对想快速用 Tokio/Axum)

  1. 完成 The Book 1-10 + 13 + 16(所有权、Trait、并发基础)。
  2. Chapter 17 Async(概念)。
  3. 直接开 Tokio Tutorial(做完整教程,重点:runtime、tasks、channels、time、I/O)。
  4. 学完 Tokio 基础后 → Axum(Web 框架,Tokio 团队维护),结合 tracing、serde、SQLx 做小项目。
  5. 过程中遇到不懂的 The Book 章节,再补(比如需要高级生命周期或测试时)。

额外高效资源

  • Tokio 官方 Tutorial(实践为主,最推荐)
  • Async Book(概念补充)
  • 边做项目边学:比如用 Tokio 写一个异步 TCP echo server,或用 Axum 写 Todo API。

这样你不会浪费时间在 The Book 的“学院派”内容上,同时也不会因为概念缺失而在 Tokio 里反复踩坑。

如果你现在已经读到 The Book 的哪个章节了,或者贴出你当前的进度/困惑,我可以给你更精确的调整建议。继续加油,Rust 的异步一旦入门,会觉得特别优雅!🦀

有具体代码或报错随时来问。

学 reqwest 写爬虫,最适合加在「阶段 5:异步编程」后面(即学完 Tokio 基础之后)。

为什么放在阶段 5 异步编程之后?

  • reqwest 的异步版本是主流用法(reqwest::Client + .await),它依赖 Tokio runtime 来高效处理并发请求。
  • 爬虫通常需要并发抓取(同时请求多个页面、限速、超时、重试),这正是 Tokio 的强项(tokio::spawnjoin!select!Semaphore 限流)。
  • 如果只学 blocking 版本(reqwest::blocking),可以稍早一点(阶段 3 错误处理 + 阶段 4 测试之后),但不推荐作为主要学习路径——因为你已经在学异步了,错过异步爬虫就可惜了。

推荐位置:完成阶段 5(Tokio Tutorial 做完)之后,立刻加入一个「异步 HTTP 客户端 + 爬虫小项目」作为阶段 5 的扩展实践,或者单独作为阶段 5.5

这样学的好处:

  • 刚学会 #[tokio::main]tokio::spawnmpsc 等,就立刻用在真实场景里,印象深刻。
  • 自然复习 async fnResult + ? 在异步中的传播、错误处理。
  • 为后续 阶段 7(Axum Web 服务) 打基础(reqwest 常用于调用外部 API 或写客户端)。

学 reqwest + 爬虫的具体顺序建议

  1. 先学 reqwest 基础(1-2 天):

    • 官方文档:https://docs.rs/reqwest
    • 重点:Client 复用(不要每次都 reqwest::get)、headers、timeout、proxy、redirect、JSON 支持(结合 serde)。
    • 同时支持 blocking 和 async 两种 API,先从 async 开始。
  2. 结合 Tokio 做并发

    • tokio::join! / futures::future::join_all 并行抓取多个 URL。
    • tokio::time::timeout 处理超时。
    • tokio::sync::Semaphore 控制并发数(避免被网站封)。
  3. 解析 HTML(爬虫核心):

    • 推荐搭配 scraper crate(基于 select/css 选择器,类似 Python 的 BeautifulSoup)。
    • 或者 select / html5ever 等。
    • 解析后用 serde 把数据转成 struct,再存 JSON / 文件 / 数据库。
  4. 工程化增强(体现业界实践):

    • 错误处理:thiserror + anyhow
    • 日志:tracing
    • 配置:命令行参数(clap)或配置文件
    • 限速、User-Agent 伪装、Cookie、Proxy 支持
    • 测试:单元测试 mock 请求(wiremock crate)

推荐爬虫练习项目(由简到难)

  • 入门:抓取单个静态页面(如 Hacker News 前 10 条标题),解析后打印。
  • 进阶:并发抓取多个页面 + 分页(e.g. 抓取某个博客的所有文章标题和链接)。
  • 生产级:带 User-Agent、随机延时、代理池、重试机制、数据存到 JSON 或 SQLite(用 sqlx)。
  • 挑战:抓取需要登录的站点,或处理反爬(但注意合法性)。

注意事项(避坑)

  • 合法性:只爬取允许爬取的网站,遵守 robots.txt 和速率限制。
  • 性能:复用同一个 Client 实例(连接池很重要)。
  • JS 重渲染页面:纯 reqwest + scraper 只能抓静态 HTML;动态页面需要 headless browser(如 fantoccini + webdriver),那属于更高级主题,可以后期再学。
  • 如果你暂时不想学异步,也可以先用 reqwest 的 blocking 特性快速上手,但尽快转异步。

把这个爬虫项目做完后,你对异步、HTTP、错误处理、serde 的理解会上升一个层次,也为后面用 Axum 写 Web 服务(或写 API 客户端)做好准备。

想现在就开始吗?我可以给你一个最小可运行的异步爬虫模板代码(抓取示例网站),或者帮你规划更详细的 daily 练习步骤。告诉我你当前进度到哪个阶段了,我再帮你精确调整!🦀