Visual Studio Code 中的 Rust
Rust 是一种功能强大的编程语言,通常用于性能和正确性至关重要的系统编程。如果您是 Rust 的新手,想了解更多信息,请访问 Rust 编程语言 在线书籍,这是开始的绝佳场所。本主题详细介绍了如何在 Visual Studio Code 中设置和使用 Rust,以及使用 rust-analyzer 扩展。
注意:VS Code Marketplace 中还有另一个流行的 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 扩展,并搜索“rust-analyzer”。您应该安装**发行版**。
我们将在本主题中讨论 rust-analyzer 的许多功能,但您也可以参考扩展的文档 https://rust-analyzer.github.io。
检查您的安装
安装 Rust 后,您可以通过打开新的终端/命令提示符并键入以下命令来检查是否已正确安装所有内容:
rustc --version
这将输出 Rust 编译器的版本。如果您想要更多详细信息,可以添加 --verbose
参数。如果遇到问题,您可以查阅 Rust 的 安装指南。
您可以通过运行以下命令来使 Rust 安装保持最新版本:
rustup update
每 6 周发布一次新的稳定版 Rust,因此这是一个好习惯。
本地 Rust 文档
安装 Rust 时,您还会在本地计算机上安装完整的 Rust 文档集,您可以通过键入 rustup doc
来查看这些文档。Rust 文档(包括 Rust 编程语言 和 Cargo 手册)将在您的本地浏览器中打开,这样您就可以在离线时继续学习 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 清单 文件。
src\
main.rs
.gitignore
Cargo.toml
main.rs
包含程序的入口函数 main()
,并使用 println!
将“Hello, world!” 打印到控制台。
fn main() {
println!("Hello, world!");
}
这个简单的 Hello World 程序没有任何依赖项,但您可以在 [dependencies]
下添加 Rust 包(箱子)引用。
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 提供 内联提示,以浅色文本形式在编辑器中显示推断类型、返回值、命名参数。
虽然内嵌提示对于理解代码很有帮助,但你也可以通过**编辑器 > 内嵌提示:启用**设置来配置此功能(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 工具集包含由 rustc 和 clippy 提供的代码风格检查,用于检测源代码中的问题。
默认情况下启用的 rustc 代码风格检查会检测基本的 Rust 错误,但你可以使用 clippy 获得更多代码风格检查。要在 rust-analyzer 中启用 clippy 集成,将**Rust-analyzer > 检查:命令**(rust-analyzer.check.command
)设置更改为 clippy
,而不是默认的 check
。现在,rust-analyzer 扩展会在你保存文件时运行 cargo clippy
,并在编辑器和“问题”视图中直接显示 clippy 警告和错误。
快速修复
当代码风格检查在你的源代码中发现错误和警告时,rust-analyzer 通常可以提供建议的快速修复(也称为代码操作),这些操作可以通过编辑器中的灯泡悬停获得。你可以通过 ⌘. (Windows、Linux Ctrl+.) 快速打开可用的快速修复。
此外,**代码操作小部件:包含附近的快速修复**(editor.codeActionWidget.includeNearbyQuickFixes)是一个默认启用的设置,它将在 ⌘. (Windows、Linux Ctrl+.)(命令 ID editor.action.quickFix
)中激活一行中最近的快速修复,无论你的光标在该行中的什么位置。
该命令会突出显示将使用快速修复重构或修复的源代码。普通的代码操作和非修复重构仍然可以在光标位置激活。
重构
由于 rust-analyzer 对你的源代码有语义理解,因此它还可以提供智能重命名,涵盖你的所有 Rust 文件。将光标放在一个变量上,从上下文菜单、命令面板或通过 F2 选择**重命名符号**。
rust-analyzer 扩展还支持其他代码重构和代码生成,该扩展称为 Assists。
以下是几个可用的重构
- 将 if 语句转换为受保护的返回值
- 内联变量
- 提取函数
- 添加返回值类型
- 添加导入
格式化
Rust 工具集包含一个格式化程序,rustfmt,它可以格式化你的源代码,使其符合 Rust 约定。你可以使用 ⇧⌥F (Windows Shift+Alt+F、Linux Ctrl+Shift+I) 格式化你的 Rust 文件,或者通过从**命令面板**或编辑器中的上下文菜单运行**格式化文档**命令来格式化你的 Rust 文件。
你还可以选择在每次保存(**编辑器:保存时格式化**)或粘贴(**粘贴时格式化**)时运行格式化程序,以便在工作时自动保持你的 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 扩展通过**Rust Analyzer:调试**命令提供基本调试支持,该命令在命令面板中提供(⇧⌘P (Windows、Linux Ctrl+Shift+P))以及编辑器中的**运行 | 调试** CodeLens。
让我们调试一下我们之前创建的 Hello World 程序。首先,我们将设置一个断点,位于 main.rs
中。
-
你需要启用**调试:允许在任何位置设置断点**设置,你可以在设置编辑器中找到它(⌘, (Windows、Linux Ctrl+,)),通过搜索“everywhere`”找到它。
-
打开
main.rs
,然后点击编辑器中的左侧边栏来设置断点,位于println!
行上。它应该显示为一个红点。 -
要开始调试,请使用**Rust Analyzer:调试**命令,或者选择
main()
附近的**调试** CodeLens。
后续步骤
这只是对 VS Code 中 rust-analyzer 扩展功能的简要概述。有关更多信息,请查看 Rust Analyzer 扩展 用户手册 中提供的详细信息,包括如何调整特定的 VS Code 编辑器 配置。
要了解 rust-analyzer 扩展的最新功能/错误修复,请查看 CHANGELOG。你还可以尝试新功能和修复,方法是在扩展视图的**安装**下拉菜单中安装 rust-analyzer 的**预发布版本**。
如果你遇到任何问题或功能请求,请随时在 rust-analyzer 扩展的 GitHub 仓库 中记录它们。
如果你想了解更多关于 VS Code 的信息,请尝试以下主题
- 基本编辑 - VS Code 编辑器基础知识的快速介绍。
- 安装扩展 - 了解 Marketplace 中提供的其他扩展。
- 代码导航 - 快速浏览你的源代码。
常见问题
链接器错误
如果你在尝试构建 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
你可能需要通过 build-essential
包安装 GCC 工具集,方法是在终端中运行 sudo apt-get install build-essential
。
有关更多故障排除建议,请参阅 Rust 安装 指南。