JetBrains Academy《学习 Rust 的 100 个练习》迎来重大更新
100 Exercises to Learn Rust 是我们根据 Mainmatter 的同名课程 改编的版本,原作者是 Mainmatter 的首席工程顾问 Luca Palmieri。该课程刚刚迎来了我们一年前发布以来的最大更新。Palmieri 自 2018 年起就开始写 Rust,先是在 TrueLayer,后来在 AWS,他还写了 Zero to Production in Rust。Mainmatter 也会以面向团队的讲师指导工作坊形式直接讲授这些内容。我们的版本是一门 JetBrains Academy 课程,可在 RustRover 中打开。课程免费,RustRover 对非商业用途也免费。
获取课程
下文将介绍课程内容、本次更新带来的变化、课程的“快速通道”是什么样的,以及如何在全程中充分利用 AI 辅助。
课程内容
这门课程通过练习而非讲解来教授 Rust。每一课都是一小段理论,随后是一个带有测试套件的真实 Rust crate。大多数课时都从一个 todo!() 开始,要求你把它补全。
大多数练习都围绕同一个主题:工单管理系统。它从一个包含标题、描述和状态的 struct 开始,最终通过异步 REST API 向多个线程提供工单服务。概念会随着项目需要而被引入,例如当验证可能失败时用 Result 和 enum 表示错误,当需要按 ID 查找工单时用 HashMap,当多个客户端同时访问存储时用 Arc 和 Mutex。如果某个重要概念不适合工单管理系统的主题,就会用一个合适的独立练习来介绍它。
这门课程假设你至少精通另一门编程语言,但不要求有系统编程背景或手动管理内存的经验。课程分为八章,涵盖所有权与借用、trait、枚举与模式匹配、错误处理、集合与迭代器、生命周期、线程与通道,以及 Future。课程最后是一个终极挑战:这里不再讲理论,而是用一个综合练习来测试你对前八章内容的掌握程度。
我们的改编版免去了所有环境配置。不需要克隆任何东西,不需要检出分支,也不需要安装工作坊运行器。你在 RustRover 中打开课程,第一个任务就已经在那里,附带测试,还有一个可以直接运行测试的按钮。 [LOADING...]
本次更新内容
重新构建的引言。 课程现在以五节短课开场:你将构建什么、界面快速导览、两分钟的 IDE 设置、常见问题解答,然后是你的第一段 Rust 代码。在动手写代码之前,你就能清楚知道自己要做什么。
包含十个答案的 FAQ。 有些问题直接来自学习者,另一些则只是我们建议的变相表达。 [LOADING...]
终极挑战。 课程的所有部分都服务于一个项目:工单管理系统。在课程结束时,你的终极挑战是把它变成一个异步 REST API。你将编辑 Cargo.toml 文件,并自行选择依赖项。这是课程中唯一一个需要你用真实 crate 进行设计的部分,大致就像在工作中那样。
一个 requests.http 文件规定了 API。它会发送你的服务器应该处理的请求,并说明期望的响应;你可以在编辑器内针对自己的服务器运行它。它检查的是 API 的行为,而不是你的 Rust 代码,所以每个实现决策都由你来做,同时你仍然能判断它是否工作。任务描述中还包含一系列提示,从轻微点拨到完整解释,你可以按需使用,用多或少都可以。
所有测试都可见。 每个任务都会显示用于检查答案的断言,因此你会确切知道预期是什么,而不必猜测。
dev 与 release 配置文件实验。 在算术章节中,你会分别在 dev 和 release 两种 Cargo 配置文件下编译同一段会溢出的代码,并观察行为变化。使用 dev 配置文件构建时,程序会在溢出时 panic;而使用 release 配置文件构建时,它会静默回绕。大多数课程只用一句话描述这一点,但在这里你可以亲眼看到它发生。 [LOADING...]
赶时间?从最后开始
你不必从头到尾按顺序学习(FAQ 中也明确说明了这一点)。如果你以前写过 Rust,或者比起被带着做一百个小练习,你更愿意直接挑战一个真实程序,那么你可以直接跳到终极挑战。
终极挑战把课程涵盖的所有内容串联起来:工单模型、枚举与错误处理、集合相关练习、共享状态与锁,以及按定义会涉及的整个异步章节。你会很快发现哪些领域需要重新学习,因为你在构建 API 时,理解上的缺口会暴露出来。你可以带着具体问题跳回课程中的那些特定部分——因此也能从中学到更多。
这也是了解在真实世界项目中使用 RustRover 是什么感觉的最快方式。
充分利用 AI
你可以通过内置聊天轻松使用 AI。最好让 AI 来解释,而不是让它替你写代码。几个值得养成的好习惯:始终明确要求它不要修改你的代码。还有,当编译器拒绝你的代码时,把错误粘贴到 AI 聊天中,让它带你分析问题出在哪里,而不是直接要修复方案。 [LOADING...]
不过,在学习这门课程时,你应该关闭 AI 代码补全。这些练习很短,而且在训练数据中得到了充分体现,所以补全工具常常会在你读完任务之前就把它完成了。这违背了设置这些任务的初衷:重要的是卡住,然后靠自己找出解决方案。设置你的 IDE 这一课会告诉你如何关闭 AI 代码补全。 [LOADING...]
开始使用
课程免费,RustRover 对非商业用途免费,而且没有任何需要克隆的内容。
- 下载并安装 RustRover。 如果你还没有 Rust 工具链,IDE 会为你获取一个。
- 开启教育功能。 在 Welcome 屏幕上,切换到 Learn 标签页,找到 Learn to program 小组件,然后点击 Enable Access。这会安装并激活 JetBrains Academy 插件。
- 选择课程。
- 在 Learn 标签页中,点击 Get Started,然后选择 100 Exercises to Learn Rust。
- 安装 JetBrains Academy 插件后,你可以在 File | Learn and Teach | Browse Courses 下找到所有课程。
这个改编版本是开源的,所以如果你觉得哪里有问题,请告诉我们。欢迎在 GitHub 上提交 issue 和 pull request。