Visual Studio Code 中的 Rust
Rust 是一门强大的编程语言,常用于对性能和正确性有极高要求的系统编程。如果您是 Rust 新手并想了解更多信息,《Rust 程序设计语言》在线书是极佳的起点。本主题将详细介绍如何通过 rust-analyzer 扩展在 Visual Studio Code 中设置和使用 Rust。

VS Code 市场中还有另一个流行的 Rust 扩展(扩展 ID:rust-lang.rust),但该扩展已被弃用,rust-analyzer 是 rust-lang.org 推荐的 VS Code Rust 扩展。
安装
1. 安装 Rust
首先,您需要在机器上安装 Rust 工具链。Rust 通过 rustup 安装程序进行安装,该程序支持 Windows、macOS 和 Linux。请按照您对应平台的 rustup 安装指南进行操作,并注意安装构建和运行 Rust 程序所需的任何额外工具。
与在机器上安装任何新工具链一样,建议您重启终端/命令提示符和 VS Code 实例,以便使用您平台 PATH 变量中更新后的工具链路径。
2. 安装 rust-analyzer 扩展
您可以通过 VS Code 中的“扩展”视图(⇧⌘X (Windows, Linux Ctrl+Shift+X))搜索“rust-analyzer”来查找并安装该扩展。您应该安装发布版本 (Release Version)。

我们将在本主题中讨论许多 rust-analyzer 的功能,您也可以参考该扩展的文档:https://rust-analyzer.github.io。
检查您的安装
安装 Rust 后,可以通过打开新的终端/命令提示符并输入以下命令来检查安装是否正确:
rustc --version
这将输出 Rust 编译器的版本。如果您想要更多详细信息,可以添加 --verbose 参数。如果遇到问题,您可以查阅 Rust 安装指南。
您可以通过运行以下命令来将 Rust 安装更新到最新版本:
rustup update
Rust 每 6 周发布一次新的稳定版本,因此保持更新是一个好习惯。
本地 Rust 文档
安装 Rust 时,您还会获得一套完整安装在本地的 Rust 文档,您可以通过输入 rustup doc 进行查阅。Rust 文档(包括《Rust 程序设计语言》和《Cargo 之书》)将在您的本地浏览器中打开,以便您在离线时继续您的 Rust 之旅。
Hello World
Cargo
当您使用 rustup 安装 Rust 时,工具链中包括 rustc 编译器、rustfmt 源代码格式化工具以及 clippy Rust 代码检查工具。您还将获得 Rust 包管理器 Cargo,它有助于下载 Rust 依赖项并构建和运行 Rust 程序。在开发 Rust 时,您会发现几乎所有事情都会用到 cargo。
Cargo new
创建第一个 Rust 程序的一个好方法是使用 Cargo 通过 cargo new 命令构建一个新项目。这将创建一个简单的 Hello World 程序以及一个默认的 Cargo.toml 依赖文件。您只需将想要创建项目的文件夹路径传给 cargo new 即可。
让我们创建 Hello World。导航到您想要创建项目的文件夹并输入:
cargo new hello_world
要在 VS Code 中打开新项目,请进入新文件夹并通过 code . 启动 VS Code。
cd hello_world
code .
由于您是作者,请为新文件夹启用 工作区信任 (Workspace Trust)。为了避免每次创建新项目时都被提示,您可以勾选信任父文件夹 'my_projects' 中所有文件的作者选项,从而为整个项目父文件夹启用工作区信任。
cargo new 会创建一个简单的 Hello World 项目,其中包含一个 main.rs 源代码文件和一个 Cargo.toml Cargo 清单 (manifest) 文件。
src\
main.rs
.gitignore
Cargo.toml
main.rs 包含程序的入口函数 main(),并使用 println! 将“Hello, world!”打印到控制台。
fn main() {
println!("Hello, world!");
}
这个简单的 Hello World 程序没有任何依赖项,但您可以根据需要在 [dependencies] 下添加 Rust 包(crate)引用。
Cargo build
Cargo 可用于构建您的 Rust 项目。打开一个新的 VS Code 集成终端(⌃⇧` (Windows, Linux Ctrl+Shift+`))并输入 cargo build。
cargo build

现在,您将拥有一个包含构建输出的 target\debug 文件夹,其中包含名为 hello_world.exe 的可执行文件。
运行 Hello World
Cargo 也可以通过 cargo run 命令来运行您的 Rust 项目。
cargo run
您也可以在终端中通过输入 .\target\debug\hello_world 手动运行 hello_world.exe。

IntelliSense
IntelliSense 功能由 Rust 语言服务器 rust-analyzer 提供,它提供了详细的代码信息和智能建议。
首次打开 Rust 项目时,您可以在状态栏左下角查看 rust-analyzer 的处理进度。为了获得语言服务器的全部功能,建议等待 rust-analyzer 完成对项目的全面分析。

内联提示
您可能会注意到的第一件事是 rust-analyzer 提供了嵌入提示 (inlay hints),在编辑器中以浅色文本显示推断出的类型、返回值和命名参数。

虽然嵌入提示有助于理解代码,但您也可以通过 Editor > Inlay Hints: Enabled 设置( editor.inlayHints.enabled )来配置此功能。
悬停信息
将鼠标悬停在任何变量、函数、类型或关键字上,都会为您提供有关该项的信息,例如文档、签名等。您还可以跳转到代码中或 Rust 标准库中的类型定义。

自动补全
当您在 Rust 文件中输入代码时,IntelliSense 会为您提供建议补全和参数提示。

使用 ⌃Space (Windows, Linux Ctrl+Space) 手动触发建议。
语义语法高亮
由于对项目源代码有深入的理解,rust-analyzer 能够使用语义语法高亮和样式。例如,您可能已经注意到可变变量在编辑器中带有下划线。

快速辨别哪些 Rust 变量是可变的(mutable)有助于理解源代码,您还可以使用用户设置中的 editor.semanticTokenColorCustomizations 设置来更改样式。
在 settings.json 中,您可以添加:
{
"editor.semanticTokenColorCustomizations": {
"rules": {
"*.mutable": {
"fontStyle": "", // set to empty string to disable underline, which is the default
},
}
},
}
您可以在 rust-analyzer 文档的编辑器功能 (Editor features)部分了解更多有关语义语法自定义的信息。
代码导航
代码导航功能可在编辑器中的上下文菜单中使用。
- 转到定义 (Go to Definition) F12 - 跳转到类型定义的源代码。
- 查看定义 (Peek Definition) ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10) - 调出一个 Peek 窗口以显示类型定义。
- 转到引用 (Go to References) ⇧F12 (Windows, Linux Shift+F12) - 显示该类型的所有引用。
- 显示调用层级 (Show Call Hierarchy) ⇧⌥H (Windows, Linux Shift+Alt+H) - 显示函数的所有调用方或被调用方。
您可以通过命令面板 (⇧⌘P (Windows、Linux 为 Ctrl+Shift+P)) 中的转到符号命令来进行符号搜索导航。
- 转到文件中的符号 - ⇧⌘O (Windows, Linux Ctrl+Shift+O)
- 转到工作区中的符号 - ⌘T (Windows, Linux Ctrl+T)
代码检查
Rust 工具链包括由 rustc 和 clippy 提供的代码检查(linting)功能,用于检测源代码中的问题。

默认启用的 rustc 检查器可检测基本的 Rust 错误,但您可以使用 clippy 来获取更多检查信息。要在 rust-analyzer 中启用 clippy 集成,请将 Rust-analyzer > Check: Command (rust-analyzer.check.command) 设置从默认的 check 更改为 clippy。现在,rust-analyzer 扩展将在您保存文件时运行 cargo clippy,并直接在编辑器和“问题”视图中显示 clippy 警告和错误。
快速修复
当检查器在您的源代码中发现错误和警告时,rust-analyzer 通常可以提供建议的快速修复(Quick Fixes,也称为代码操作),可通过编辑器中悬停时的灯泡图标访问。您可以使用 ⌘. (Windows, Linux Ctrl+.) 快速打开可用的快速修复。
此外,Code Action Widget: Include Nearby Quick Fixes( editor.codeActionWidget.includeNearbyQuickFixes )默认处于启用状态,无论光标在该行何处,使用 ⌘. (Windows, Linux Ctrl+.) 都可以激活该行最近的快速修复。
该命令会突出显示将通过快速修复进行重构或修复的源代码。普通代码操作和非修复重构仍可在光标位置激活。

重构
由于 rust-analyzer 对您的源代码具有语义理解能力,它还可以在所有 Rust 文件中提供智能重命名。将光标置于变量上,从上下文菜单、命令面板中选择重命名符号 (Rename Symbol),或按 F2。
rust-analyzer 扩展还支持其他代码重构和代码生成,该扩展将其称为 辅助功能 (Assists)。
以下是部分可用的重构功能:
- 将 if 语句转换为守卫返回 (Convert if statement to guarded return)
- 内联变量 (Inline variable)
- 提取函数 (Extract function)
- 添加返回类型 (Add return type)
- 添加导入 (Add import)
格式化
Rust 工具链包含一个格式化工具 rustfmt,它可以根据 Rust 约定格式化您的源代码。您可以使用 ⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) 或通过从命令面板或编辑器上下文菜单运行格式化文档 (Format Document) 命令来格式化 Rust 文件。
您还可以选择在每次保存(Editor: Format On Save)或粘贴(Format On Paste)时运行格式化程序,以便在工作时自动保持 Rust 代码格式正确。
调试
rust-analyzer 扩展支持在 VS Code 中调试 Rust。
安装调试支持
要开始调试,您首先需要安装两个提供调试支持的语言扩展之一:
- Microsoft C++ (ms-vscode.cpptools) – 在 Windows 上
- CodeLLDB (vadimcn.vscode-lldb) – 在 macOS/Linux 上
如果您忘记安装这些扩展之一,当您尝试启动调试会话时,rust-analyzer 会提供一个包含 VS Code 市场链接的通知。

使用 Rust Analyzer: Debug
rust-analyzer 扩展通过命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中提供的 Rust Analyzer: Debug 命令以及编辑器中的 Run|Debug CodeLens 提供基本的调试支持。
让我们调试之前创建的 Hello World 程序。首先,我们在 main.rs 中设置一个断点。
-
您需要启用 Debug: Allow Breakpoints Everywhere 设置,您可以在设置编辑器(⌘, (Windows, Linux Ctrl+,))中搜索“everywhere”找到它。

-
打开
main.rs并单击编辑器左侧的边距,在println!行上设置断点。它应该显示为一个红点。
-
要开始调试,请使用 Rust Analyzer: Debug 命令或选择
main()上方的 Debug CodeLens。
后续步骤
以上是有关 VS Code 中 rust-analyzer 扩展功能的简要概述。有关更多信息,请参阅 Rust Analyzer 扩展用户手册中提供的详细信息,包括如何调整特定的 VS Code 编辑器配置。
要随时了解 rust-analyzer 扩展的最新功能/错误修复,请查看 更新日志 (CHANGELOG)。您还可以通过“扩展”视图的安装 (Install) 下拉菜单安装 rust-analyzer 预览版本 (Pre-Release Version) 来尝试新功能和修复。
如果您有任何问题或功能请求,请随时在 rust-analyzer 扩展的 GitHub 仓库中提交。
如果您想了解更多关于 VS Code 的信息,请尝试以下主题:
常见问题
链接器错误
如果您在尝试构建 Rust 程序时看到诸如 "error: linker `link.exe` not found" 之类的链接器错误,则说明您可能缺少必要的 C/C++ 工具链。根据您的平台,您需要安装带有 C/C++ 链接器的工具链以合并 Rust 编译器的输出。
Windows
在 Windows 上,您还需要安装 Microsoft C++ Build Tools 以获取 C/C++ 链接器 link.exe。运行 Visual Studio 安装程序时,请确保选择使用 C++ 的桌面开发 (Desktop Development with C++)。
只要您拥有有效的 Visual Studio 许可证(Community、Pro 或 Enterprise 版),就可以使用来自 Visual Studio Build Tools 的 C++ 工具链配合 Visual Studio Code 来编译、构建和验证任何代码库。
macOS
您可能需要在终端中运行 xcode-select --install 来安装 Xcode 工具链。
Linux
您可能需要通过在终端中运行 sudo apt-get install build-essential 来安装 build-essential 包以获取 GCC 工具链。
有关进一步的故障排除建议,请参考 Rust 安装指南。