Visual Studio Code 中的 Rust
Rust 是一种强大的编程语言,通常用于系统编程,因为其性能和正确性是重要的考量因素。如果您是 Rust 新手并想了解更多,可以在线阅读 《The Rust Programming Language》 这本书。本文将详细介绍如何在 Visual Studio Code 中设置和使用 Rust,并结合 rust-analyzer 扩展。

VS Code Marketplace 中还有一个流行的 Rust 扩展(扩展 ID:rust-lang.rust),但该扩展已弃用,rust-lang.org 推荐使用 rust-analyzer 作为 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 扩展,搜索“rust-analyzer”。您应该安装 发布版本。

我们将在本文档中介绍 rust-analyzer 的许多功能,您也可以参考该扩展的文档:https://rust-analyzer.github.io。
检查您的安装
安装 Rust 后,您可以通过打开一个新的终端/命令提示符并输入以下命令来检查一切是否已正确安装:
rustc --version
这将输出 Rust 编译器的版本。如果您想要更多详细信息,可以添加 --verbose 参数。如果您遇到问题,可以查阅 Rust 的 安装指南。
您可以通过运行以下命令来保持 Rust 安装更新到最新版本:
rustup update
Rust 每 6 周发布一个新稳定版本,所以这是一个好习惯。
本地 Rust 文档
安装 Rust 时,您还会获得完整的 Rust 文档集,并将其本地安装在您的计算机上,您可以通过输入 rustup doc 来查看。Rust 文档,包括 《The Rust Programming Language》 和 《The Cargo Book》,将在您的本地浏览器中打开,以便您在离线时也能继续您的 Rust 之旅。
Hello World
Cargo
使用 rustup 安装 Rust 时,工具集包括 rustc 编译器、rustfmt 源代码格式化程序和 clippy Rust linter。您还会获得 Cargo,这是 Rust 的包管理器,用于帮助下载 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 .
为新文件夹启用 工作区信任,因为您是作者。您可以通过勾选“信任父文件夹 ‘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
您也可以在终端中手动运行 hello_world.exe,输入 .\target\debug\hello_world。

IntelliSense
IntelliSense 功能由 Rust 语言服务器 rust-analyzer 提供,它提供详细的代码信息和智能建议。
当您第一次打开 Rust 项目时,您可以在状态栏的左下角观察 rust-analyzer 的进度。您需要等待 rust-analyzer 完全审查完您的项目,才能获得语言服务器的全部功能。

内联提示
您可能注意到的第一个功能之一是 rust-analyzer 提供的内嵌提示,以浅色文本显示推断的类型、返回值、命名参数。

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

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

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

能够快速区分 Rust 变量的可变性有助于理解源代码,但您也可以在用户设置中使用 VS Code 的 editor.semanticTokenColorCustomizations 设置来更改样式。
在 settings.json 中,您将添加:
{
"editor.semanticTokenColorCustomizations": {
"rules": {
"*.mutable": {
"fontStyle": "", // set to empty string to disable underline, which is the default
},
}
},
}
您可以在 rust-analyzer 文档的“编辑器功能”部分了解更多关于 rust-analyzer 语义语法自定义的信息。
代码导航
代码导航功能可在编辑器中的上下文菜单中使用。
- 转到定义 F12 - 转到类型定义的源代码。
- 窥视定义 ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10) - 弹出窥视窗口显示类型定义。
- 转到引用 ⇧F12 (Windows, Linux Shift+F12) - 显示该类型的全部引用。
- 显示调用层次结构 ⇧⌥H (Windows, Linux Shift+Alt+H) - 显示函数的所有调用(来自或去往)。
您可以通过命令面板 (⇧⌘P (Windows、Linux 为 Ctrl+Shift+P)) 中的转到符号命令来进行符号搜索导航。
- 在文件中转到符号 - ⇧⌘O (Windows, Linux Ctrl+Shift+O)
- 在工作区中转到符号 - ⌘T (Windows, Linux Ctrl+T)
代码检查
Rust 工具集包括 linting 功能,由 rustc 和 clippy 提供,用于检测源代码中的问题。

rustc linter 默认启用,用于检测基本的 Rust 错误,但您可以使用 clippy 来获得更多的 lint。要在 rust-analyzer 中启用 clippy 集成,请将 Rust-analyzer > Check: Command (rust-analyzer.check.command) 设置更改为 clippy,而不是默认的 check。rust-analyzer 扩展现在将在您保存文件时运行 cargo clippy,并在编辑器和 Problems 视图中直接显示 clippy 的警告和错误。
快速修复
当 linter 在您的源代码中发现错误和警告时,rust-analyzer 通常会提供建议的快速修复(也称为代码操作),可以通过编辑器中的灯泡图标悬停来获得。您可以通过 ⌘. (Windows, Linux Ctrl+.) 快速打开可用的快速修复。
此外,代码操作小组件:包含附近的快速修复 (editor.codeActionWidget.includeNearbyQuickFixes) 是一个默认启用的设置,它会从 ⌘. (Windows、Linux 为 Ctrl+.) (命令 ID editor.action.quickFix) 激活一行中最近的快速修复,无论您的光标在该行的哪个位置。
该命令会突出显示将通过快速修复进行重构或修复的源代码。普通代码操作和非修复重构仍可在光标位置激活。

重构
由于 rust-analyzer 对您的源代码进行了语义理解,因此它还可以提供智能重命名,并跨 Rust 文件进行。将光标放在一个变量上,从上下文菜单、命令面板或通过 F2 选择重命名符号。
rust-analyzer 扩展还支持其他代码重构和代码生成,这些功能被扩展称为辅助。
以下是一些可用的重构功能:
- 将 if 语句转换为守卫返回
- 内联变量
- 提取函数
- 添加返回类型
- 添加导入
格式化
Rust 工具集包括一个格式化程序 rustfmt,它可以格式化您的源代码以符合 Rust 约定。您可以使用 ⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) 或通过从命令面板或编辑器中的上下文菜单运行格式化文档命令来格式化您的 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 Marketplace 链接的通知。

使用 Rust Analyzer:调试
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 扩展的最新功能/错误修复,请参阅发布说明。您还可以通过在扩展视图的安装下拉菜单中安装 rust-analyzer 的预发布版本来试用新功能和修复。
如果您有任何问题或功能请求,请随时在 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++ 进行桌面开发。
只要您拥有有效的 Visual Studio 许可证(社区版、专业版或企业版),就可以将 Visual Studio Build Tools 的 C++ 工具集与 Visual Studio Code 一起使用来编译、构建和验证任何代码库。
macOS
您可能需要通过在终端中运行 xcode-select --install 来安装 XCode 工具集。
Linux
您可能需要通过在终端中运行 sudo apt-get install build-essential 来安装 build-essential 包中的 GCC 工具集。
有关进一步的故障排除建议,请参阅Rust 安装指南。