Visual Studio Code 中的 Rust

Rust 是一种强大的编程语言,常用于系统编程,因为性能和正确性是高优先级。如果你是Rust新手,想了解更多,《Rust编程语言在线》一书是一个很好的起点。本主题详细介绍了如何在Visual Studio Code中使用Rust,使用rust-analyzer扩展。

锈蚀扩展横幅

注释

VS Code 市场上还有另一个流行的 Rust 扩展(扩展 ID:rust-lang.rust),但该扩展已被弃用,rust-lang.org 推荐使用 rust-analyzer 的 VS Code Rust 扩展。

安装

1. 安装Rust

首先你需要在你的机器上安装Rust工具集。Rust 是通过 rustup 安装程序安装的,该安装程序支持在 Windows、macOS 和 Linux 上安装。遵循你平台的 rustup 安装指南,注意安装构建和运行 Rust 程序所需的额外工具。

注释

和安装任何新工具集一样,你需要确保重启终端/Commands提示符和VS Code实例,以便使用平台PATH变量中更新的工具集位置。

2. 安装 Rust-analyzer 扩展

你可以在VS Code中的扩展视图(⇧⌘X(Windows,Linux Ctrl+Shift+X)并搜索“rust-analyzer”,找到并安装Rust-analyzer扩展。你应该安装发布版

扩展视图中的 Rust-analyzer 扩展

我们会在本主题中讨论许多 Rust-analyzer 的功能,但你也可以参考 https://rust-analyzer.github.io 的扩展文档。

检查你的安装情况

安装 Rust 后,你可以打开一个新的终端或命令提示符,输入以下内容来确认所有安装正确:

rustc --version

该系统将输出 Rust 编译器的版本。如果你想了解更多细节,可以添加——冗长争论。如果遇到问题,可以参考Rust安装指南

您可以通过以下程序保持 Rust 安装的最新版本:

rustup update

Rust每6周发布一次新的稳定版本,所以这个习惯很不错。

本地Rust文档

安装Rust时,你也会在本地下载完整的Rust文档集,你可以通过输入查看鲁斯普医生.Rust文档,包括《Rust编程语言》和《货物手册》,将在本地浏览器中打开,方便你离线继续Rust之旅。

你好,世界

货物

当你用 rustup 安装 Rust 时,工具集里包含了 rustc 编译器、rustfmt 源代码格式化器和 clippy 的 Rust 打印工具。你还会得到Cargo,Rust的包管理器,帮助下载Rust依赖,并构建和运行Rust程序。你会发现你最终会使用货物几乎所有与Rust合作时都能做到。

货物新

创建第一个 Rust 程序的一个好方法是用 Cargo 通过输入货物新.这样会创建一个简单的 Hello World 程序和默认程序Cargo.toml依赖文件。你通过了货物新你想创建项目的文件夹。

让我们一起创造Hello World。导航到你想创建项目的文件夹,输入:

cargo new hello_world

要在 VS Code 中打开你的新项目,进入新文件夹并通过以下方式启动 VS Code。代码。:

cd hello_world
code .
注释

作为作者,请为新文件夹启用 Workspace Trust。你可以为整个项目文件夹的父文件夹启用 Workspace Trust,这样在创建新项目时,可以通过勾选信任父文件夹 'my_projects' 中所有文件作者的选项来避免被提示。

货物新创建一个简单的 Hello World 项目,包含main.rs源代码文件和Cargo.toml 货物清单文件。

src\
    main.rs
.gitignore
Cargo.toml

main.rs拥有程序的入口函数main()并用以下方式向控制台打印“Hello, world!”字样PrintLN!.

fn main() {
    println!("Hello, world!");
}

这个简单的 Hello World 程序没有任何依赖,但你可以在下面添加 Rust 包(crate)引用[依赖关系].

货运制造

货物可以用来建造你的Rust项目。打开一个新的 VS Code 集成终端⌃⇧'(Windows,Linux Ctrl+Shift+')并输入货运制造.

cargo build

集成终端中的货物制造输出

你现在将拥有目标/调试带有构建输出的文件夹包含一个名为hello_world.exe.

运行Hello World(世界问候)

货物也可以用来运行你的Rust项目,通过以下方式货运航线.

cargo run

你也可以跑步hello_world.exe在终端中手动输入.\target\调试\hello_world.

手动在集成端子中运行hello_world.exe输出

IntelliSense

IntelliSense 的功能由 Rust 语言服务器 rust-analyzer 提供,提供详细的代码信息和智能建议。

当你第一次打开Rust项目时,可以在状态栏左下角看到Rust-analyzer的进展。你应该等 rust-analyzer 完全审核完你的项目后,才能充分发挥语言服务器的全部功能。

VS Code 状态栏中的 Rust-analyzer 正在进行中

镶嵌提示

你可能首先注意到的是 Rust-analyzer 在编辑器中提供内嵌提示,显示推断类型、返回值和命名参数。

带有镶嵌提示的锈蚀程序

虽然嵌入提示有助于理解代码,但你也可以通过编辑器> 嵌入提示:启用设置来配置该功能 (

editor.inlay提示.enabled
  • 在VS代码中打开
  • 在VS Code Insiders中开放
).

悬停信息

鼠标悬停在任何变量、函数、类型或关键词上,就能获得该项的信息,比如文档、签名等。你也可以直接跳转到自己代码中的类型定义,或者使用标准的Rust库。

锈弦类型的悬停信息

自动完成

当你输入Rust文件时,IntelliSense会为你提供建议的补全和参数提示。

Rust String成员的智能补全

提示

使用⌃空格(Windows,Linux Ctrl+Space手动触发建议。

语义句法高亮

Rust-Analyzer 能够使用语义高亮和样式,这得益于其对项目源代码的丰富理解。例如,你可能注意到编辑器中可变变量被划线。

编辑器中的可变变量下划线

能够快速判断哪些Rust变量是可变的,哪些不是,有助于你理解源代码,但你也可以用VS Code更改样式

editor.semanticTokenColorCustomizations
  • 在VS代码中打开
  • 在VS Code Insiders中开放
在用户设置里设置。

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——显示函数的所有调用。

你可以通过命令面板中的“去到符号”命令(Windows,Linux Ctrl+Shift+P中的“去到符号”命令进行导航。

  • 进入文件中的符号 - ⇧⌘O(Windows,Linux Ctrl+Shift+O
  • 在工作区中进入符号 - ⌘T(Windows,Linux Ctrl+T

绒毛

Rust工具集包含了由rustc和clippy提供的linting功能,用于检测源代码问题。

关于未使用变量的提示

默认启用的 Rustc Linter 能检测基本的 Rust 错误,但你也可以用 Clippy 检测更多绒毛。要在 Rust-analyzer 中启用剪切集成,请更改 Rust-analyzer > Check: Command(检查命令) (rust-analyzer.check.command)设置为克利皮而不是默认检查.Rust-analyzer 扩展现在可以运行了货物克利皮当你保存文件并直接在编辑器和问题视图中显示截断警告和错误时。

快速修复

当linter发现源代码中的错误和警告时,rust-analyzer通常会提供建议的快速修复(也称为代码作),这些可以通过编辑器中的灯泡悬停获得。你可以通过⌘快速打开可用的快速修复。(Windows,Linux Ctrl+)。

此外,代码动作小部件:包含附近的快速修复 (

editor.codeActionWidget.includeNearbyQuickFixes
  • 在VS代码中打开
  • 在VS Code Insiders中开放
)是默认启用的设置,会在⌘的一行内激活最近的快速修复。(Windows,Linux Ctrl+。)(命令IDeditor.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-analyzer 扩展支持从 VS Code 内部调试 Rust。

安装调试支持

要开始调试,首先需要安装两个支持调试的语言扩展之一:

  • Microsoft C++ (ms-vscode.cpptools) – Windows 版
  • CodeLLDB (vadimcn.vscode-lldb) – 在macOS/Linux上

如果你忘记安装这些扩展,Rust-analyzer 会在你尝试启动调试会话时,提示你指向 VS Code 市场的链接。

安装调试扩展的 Rust-Analyzer 通知

使用 Rust 分析仪:调试

Rust-analyzer 扩展通过命令面板(Windows,Linux 的 Ctrl+Shift+P⇧⌘P)和 Run| 中可用的 Rust Analyzer: Debug 命令支持基本调试。编辑器中调试 CodeLens。

我们来调试之前创建的Hello World程序。首先,我们将在 中设置一个断点main.rs.

  1. 你需要启用“调试:允许断点处处”设置,可以在设置编辑器(⌘, (Windows, Linux Ctrl+,)中搜索“everywhere”找到。

    调试:在设置编辑器中允许断点处处

  2. 开门main.rs然后在编辑器中点击左侧的排水沟,在PrintLN!排队。它应该显示为红点。

    编辑器左侧排水沟中的红色断点点

  3. 要开始调试,可以使用Rust分析仪:调试命令或选择Debug CodeLensmain().

    调试会话在断点处停止

下一步

这里简要介绍了VS Code中Rust分析器扩展功能。更多信息请参阅 Rust 分析仪扩展用户手册中的详细信息,包括如何调整特定的 VS Code 编辑器配置。

想了解 rust-analyzer 扩展的最新功能和修复,请参见 CHANGELOG。你也可以通过安装 Extensions 视图“安装”下拉菜单中的 rust-analyzer 预发布版本来尝试新功能和修复。

如果你有任何问题或功能请求,欢迎在 Rust-analyzer 扩展 GitHub 仓库中记录。

如果你想了解更多VS Code,可以尝试以下主题:

常见问题

链接器错误

如果你看到链接错误,比如“错误:链接器link.exe未找到”当你尝试构建Rust程序时,可能缺少必要的C/C++工具集。根据你的平台,你需要安装带有C/C++链接器的工具集,来合并Rust编译器的输出。

窗户

在Windows上,你还需要安装Microsoft C++构建工具,才能获得C/C++链接器link.exe.运行Visual Studio安装程序时,务必选择“用C++进行桌面开发”。

注释

只要你拥有有效的Visual Studio许可证(社区版、专业版或企业版),你可以使用Visual Studio构建工具集中的C++工具集和Visual Studio Code来编译、构建和验证任何代码库。

macOS

你可能需要通过运行来安装XCode工具集xcode-select --install在一个终端里。

Linux

你可能需要通过构建必修通过运行方式打包sudo apt-get install build-essential在一个终端里。

如需进一步的故障排除建议,请参阅Rust安装指南。