初学者指南 · 2026
学习 Rust:完整初学者路线图
从零到自信的 Rustacean——通过所有权、特征和借用检查器的结构化学习路径。
开始之前你需要了解的
Rust 不适合作为第一门语言。你不需要是专家,但应具备:
- ✅ 必须具备任意语言的基本编程能力——变量、函数、循环、条件判断
- ✅ 必须具备熟悉命令行操作(运行程序、目录导航)
- 👍 有帮助有 C、C++ 或其他编译型语言的经验
- 👍 有帮助了解栈和堆的概念(非必须,但能加快理解)
- ❌ 无需具备系统编程或内存管理经验
- ❌ 无需具备计算机科学学位——许多自学开发者也成功掌握了 Rust
Rust 学习路线图
安装与 Hello World
1–2 小时rustup(官方安装程序)安装 Rust。一条命令即可安装编译器、Cargo(构建工具)和 rustfmt(格式化工具)。编写并运行你的第一个程序。熟悉 cargo new、cargo build 和 cargo run。变量、类型与函数
1–3 天let、let mut、基本类型(i32、f64、bool、char、&str)、带显式返回类型的函数,以及"最后一个表达式即为返回值"规则。let mut 选择进入可变性。遮蔽(let x = x + 1)允许你复用变量名,同时创建新的绑定。所有权——最难的部分
3–7 天这是大多数初学者卡住的地方。所有权有三条规则:(1) 每个值有且仅有一个所有者;(2) 当所有者离开作用域时,值被释放;(3) 当堆上的值被赋给另一个变量时,所有权转移。
预计会在这里与编译器"战斗"。这很正常。仔细阅读错误信息——Rust 的错误是所有语言中最有帮助的。每一次与编译器的较量,都在传授你关于内存的真实知识。
借用与引用
2–4 天&T 是不可变借用(可以同时有多个)。&mut T 是可变借用(同一时刻只能有一个,且不能有其他借用)。& 或一个独占 &mut——两者不能共存。这相当于在编译期强制执行的读写锁,是数据竞争不可能发生的根本原因。结构体、枚举与模式匹配
3–5 天impl 块添加方法。Rust 的枚举是代数数据类型——每个变体可以携带不同的数据。match 穷举地处理它们。Option<T>(Some/None——Rust 的空值安全类型)和 Result<T, E>(Ok/Err——Rust 的错误类型)。两者都是枚举,随处可见。错误处理
2–3 天Result<T, E>。? 运算符将错误向上传播调用栈,无需在每一步手动 match。了解 unwrap()(出错时 panic——原型阶段可以用)和正确错误处理之间的区别。特征与泛型
3–5 天Display、Debug、Clone、Iterator、From/Into。闭包与迭代器
2–3 天|x| x * 2。迭代器链(.filter().map().collect())是惰性的,编译为高效循环——没有中间分配。这是地道的 Rust 写法,你会频繁使用。生命周期
2–4 天'a。心智模型:"输出引用的存活时间不能超过输入引用。"不要在早期为生命周期感到压力。大多数真实代码不需要显式标注。在熟悉其他所有内容之后再回头学这一章。
构建真实项目
持续进行巩固所学最快的方式是动手做项目。适合入门的项目:
- 命令行工具(使用
clapcrate 解析参数) - 用
axum搭建简单的 HTTP 服务器 - 文本文件解析器或 CSV 处理器
- 将你现有的某个 Python/JS 脚本用 Rust 重写
5 个让所有人都踩坑的地方
1. 本该借用,却一直转移所有权
Rust 新手会到处使用 .clone() 来规避所有权错误。clone 能用,但通常没有必要——大多数时候,引用(&T)才是你真正需要的。问问自己:"我需要拥有这个值,还是只是读取它?"
2. 分号陷阱
函数最后一行末尾的分号会悄无声息地将返回类型改为 ()。这会导致 E0308 类型不匹配,让初学者困惑好几天。Rust 是基于表达式的——没有分号意味着该表达式作为返回值。
3. String 与 &str 的混淆
String 是拥有所有权的堆分配字符串。&str 是借用的切片。函数参数几乎总应该接受 &str 而非 String——&str 同时接受 String 和字符串字面量。编译器错误通常会提示你使用 as_str() 或 &。
4. 闭包中迭代器的双重引用
当你对 Vec<i32> 调用 .iter() 时,闭包内每个元素是 &&i32。使用 |&&x| 或 |x| *x 来解引用。.into_iter() 会消耗集合,直接给出拥有所有权的 i32。这几乎让每个 Rust 初学者都踩过坑。
5. 试图同时持有引用和进行可变操作
你不能同时持有活跃的 &T 借用并调用 &mut T 方法。解决方案:(a) 在可变操作之前将值复制出来,(b) 用作用域块结束借用,或 (c) 重构代码使两者不必同时存在。
🎯 最快的学习方式:做练习,不只是阅读
各阶段最佳免费资源
🌱 完全初学者
- →Rustlings Arena(本站) — 26 个浏览器交互式挑战——无需安装
- →《Rust 程序设计语言》 — 官方书籍,免费在线阅读——权威参考
- →Rustlings CLI — Rust 基金会出品的官方终端练习
🔥 逐渐熟悉
- →Rust by Example — 以代码为主的学习方式,每个概念都有可运行示例
- →Exercism Rust 题库 — 100+ 道练习题,附社区辅导
- →rustlings 错误参考 — 常见编译器错误解析与修复
🚀 构建项目
- →《Zero to Production in Rust》 — 构建真实的邮件订阅后端——强烈推荐
- →《Comprehensive Rust》(Google 出品) — 面向 Android/系统开发者的 Rust 教程,由 Google 编写
- →Jon Gjengset 的 YouTube 频道 — 深度直播编程——适合入门后进阶
常见问题
学习 Rust 需要多长时间?
预计需要 1–2 周所有权才会真正理解,1 个月后才能编写有用的程序,3–6 个月后才能在真实项目中感到游刃有余。学习曲线集中在前期——过了所有权这一章之后会轻松很多。
Rust 适合初学者吗?
Rust 不适合作为第一门语言——借用检查器引入了 Python 或 JavaScript 中不存在的概念。但如果你已经掌握一门语言并想学习系统编程,Rust 的编译器错误比 C++ 更有教育意义,工具链也非常出色。
学 Rust 需要会 C 或 C++ 吗?
不需要。许多成功的 Rust 开发者来自 Python、JavaScript 或 Go 背景。有 C/C++ 经验有助于理解所有权的重要性(因为你亲身经历过它所防止的那些 Bug),但这不是前提条件。
用 Rust 第一个应该做什么项目?
命令行工具是经典的入门项目。它涉及文件 I/O、解析、错误处理和结构体——覆盖了大多数 Rust 概念,而无需用到异步或 Web 框架。clap crate 让参数解析变得简单。
2026 年学 Rust 值得吗?
值得。Rust 现已进入 Linux 内核、Android、Windows、AWS、Cloudflare 以及无数生产系统。Rust 工程师需求旺盛,而供给相对于其技能价值仍然偏低。一旦所有权的概念融会贯通,这也是一门令人深感满足的语言。