前言

教程介绍

我在汽车嵌入式行业做了多年系统架构。在这个领域,C 语言长期统治着一切——功能安全标准、实时操作系统、底层驱动,无不用 C 写成。它足够快,足够直接,但它也足够危险:一个野指针、一次越界访问,都可能在量产车辆上酿成故障。

第一次接触 Rust 时,我的感受是:这正是我一直在等的东西。

它和 C 一样快,和 C 一样接近硬件,却在编译器层面拒绝了那些让人夜不能寐的内存 bug。这不是理论上的承诺——Rust 的所有权系统是一套经过严格设计的类型论,它把「内存安全」从程序员的责任转移到了编译器的职责。

这套教程,是我把 Rust 引入工程实践过程中的思考总结。

这套教程是什么

一套互动式 Rust 教程。每篇文章里的代码都可以直接在浏览器里运行,不需要配置任何环境;练习题可以直接在页面上编辑和提交;选择题会即时反馈答案和解析。

学习一门语言,光看是不够的。你需要动手,需要看到错误,需要理解编译器在说什么。这套教程的设计目标,就是让这个过程尽可能流畅。

和官方文档有什么不同

Rust 官方 The Book 是极好的参考资料,但它是一本书——它假设你会从头到尾顺序阅读,它追求严谨完整。

这套教程做的是另一件事:用更口语化的方式把概念讲透,配上可以立刻运行的代码、可交互的测试题,让你在理解之前就先感受到,学完教程就能做开发。

对于重要的概念,我们会反复从不同角度解释。对于容易犯错的地方,我们会故意给出会报错的代码,让你看到编译器的反应。这不是坏事——学会读懂编译器的报错信息,是学 Rust 最重要的技能之一。

你需要准备什么

什么都不需要。有浏览器就够了。

如果你有任何编程基础——不管是 Python、Java、C 还是 JavaScript——都可以直接开始。如果你有 C/C++ 背景,某些概念你会理解得更快,但这不是前提条件。

一点期待

Rust 的学习曲线在前期是真实存在的。所有权系统是一套新的思维方式,和大多数语言都不一样。你会遇到编译器拒绝你认为「完全没问题」的代码的情况,这很正常。

但一旦那个转折点到来——你开始感觉编译器是在帮你,而不是在为难你——你会发现这门语言真的很好用。

希望这套教程能帮你更快到达那个转折点。

—— 雪云飞星(付皓文)

如何学习 Rust

学习 Rust 需要什么基础

本教程假设你:

  • 有过至少一门编程语言的经验(不限语言)
  • 了解基本的编程概念(变量、函数、循环)

不需要:

  • 操作系统或编译原理知识
  • 任何 Rust 相关经验

如果你完全没有编程基础,建议先学一门入门语言(Python 或者 C 是个不错的选择),再来学 Rust。

完成本教程需要多长时间

本教程的设计学习周期是 1-2 个月,每天投入 1-2 小时。

具体节奏参考:

阶段内容建议时间
入门阶段Rust 基础、安装环境、变量与类型、控制流第 1-2 周
核心阶段所有权、借用、生命周期(Rust 最难的部分)第 3-5 周
进阶阶段结构体、枚举、trait、泛型、错误处理第 6-7 周
实战阶段完成所有练习题,尝试写一个小项目第 8 周

不要着急。核心阶段(所有权和借用)是绝大多数人卡住的地方,在这里多花一倍时间是完全正常的。

Rust 的学习曲线是什么样的

坦率地说:Rust 的学习曲线比大多数语言都陡。但它陡的方式比较特殊——它难在前期,而不是后期

Rust 学习曲线示意图

一旦跨过所有权这道坎,后面的内容反而会越来越流畅。很多 Rust 开发者的反馈是:写了一段时间后,感觉编译器越来越像一个会指出你错误的代码审查者,而不是障碍。

熟练掌握 Rust 要多久

这里做一个横向对比,前提是每天有 1-2 小时的学习和练习时间:

目标程度PythonC 语言Rust
能写出能跑的程序1-2 周2-4 周1-2 月
能独立完成中型项目2-3 月4-6 月4-6 月
达到生产级熟练度6-12 月1-2 年1-2 年

Rust 的入门期明显比 Python 长,但和 C 语言相比,达到生产级熟练度的时间其实差不多——因为 Rust 编译器会帮你排查掉大量 C 语言里需要靠经验积累才能避免的问题。

从实战角度:如果你有 C/C++ 背景,适应 Rust 通常需要 1-3 个月;如果你只有 Python/Java 背景,需要 2-4 个月才能感觉”顺手”。但这个时间投入是值得的——Rust 程序一旦编译通过,出 bug 的概率远低于等效的 C 代码。

学习建议

不要跳过错误信息

Rust 的编译器报错信息是业界最详细的。每次报错都仔细读一遍,时间久了你会发现自己越来越能预判编译器会说什么。

所有权卡住了就多读几遍

所有权章节不是一遍能懂的,多数人需要读 2-3 遍、写几段代码之后才会真正明白。这是正常现象,不是你的问题。

动手比阅读重要

每篇文章的练习题不要跳过,即使看起来很简单。Rust 的很多概念,你以为你懂了,但动手写的时候才会发现真正的理解在哪里。

推荐学习资源

资源链接说明
Rust 官方 The Bookdoc.rust-lang.org/book最权威的入门读物,本教程的主要参考来源
Rust 中文 The Bookrustwiki.org/zh-CN/book上面的中文译版,质量较高
Rust by Exampledoc.rust-lang.org/rust-by-example以代码示例为主,适合对照查阅
Rustlingsgithub.com/rust-lang/rustlings小练习题集,适合巩固基础
Rust Playgroundplay.rust-lang.org在线运行 Rust 代码,无需安装环境
Comprehensive Rustgoogle.github.io/comprehensive-rustGoogle 出品的 Rust 课程,结构清晰
Rust 标准库文档doc.rust-lang.org/std遇到不认识的类型和方法就查这里

遇到问题善用社区

加博主微信(和大家交个朋友)

由于博主平时也需要忙自己的工作,所以目前有点处理不过来大家的消息。微信是想和大家交个朋友,大家如果有技术上的问题,还请到微信群里向大家提问,加群请勿催促,博主会统一拉大家进群

加好友请备注“Rust“,否则通不过

微信号:xyfx18909025121(雪云飞星)