Ohhnews

分类导航

$ cd ..
Jetbrains Blog原文

JetBrains Academy《学习 Rust 的 100 个练习》迎来重大更新

#rust#编程练习#jetbrains academy#rustrover#异步编程

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 向多个线程提供工单服务。概念会随着项目需要而被引入,例如当验证可能失败时用 Resultenum 表示错误,当需要按 ID 查找工单时用 HashMap,当多个客户端同时访问存储时用 ArcMutex。如果某个重要概念不适合工单管理系统的主题,就会用一个合适的独立练习来介绍它。

这门课程假设你至少精通另一门编程语言,但不要求有系统编程背景或手动管理内存的经验。课程分为八章,涵盖所有权与借用、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 对非商业用途免费,而且没有任何需要克隆的内容。

  1. 下载并安装 RustRover。 如果你还没有 Rust 工具链,IDE 会为你获取一个。
  2. 开启教育功能。Welcome 屏幕上,切换到 Learn 标签页,找到 Learn to program 小组件,然后点击 Enable Access。这会安装并激活 JetBrains Academy 插件。
  3. 选择课程。
    1. Learn 标签页中,点击 Get Started,然后选择 100 Exercises to Learn Rust
    2. 安装 JetBrains Academy 插件后,你可以在 File | Learn and Teach | Browse Courses 下找到所有课程。

下载 RustRover

这个改编版本是开源的,所以如果你觉得哪里有问题,请告诉我们。欢迎在 GitHub 上提交 issue 和 pull request。