在 Visual Studio Code 中使用 Rust
Rust 是一種功能強大的程式語言,常用於系統程式設計,其中效能和正確性是高度優先考慮的事項。如果您是 Rust 新手並想了解更多資訊,線上書籍《Rust 程式語言》是一個很好的入門資源。本主題將詳細介紹如何在 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 文件,包括《Rust 程式語言》和《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 清單檔案。
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 提供內嵌提示,在編輯器中以淺色文字顯示推斷型別、返回值和命名引數。

雖然內嵌提示有助於理解程式碼,但您也可以透過編輯器 > 內嵌提示:啟用設定(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 提供的 linting,用於檢測原始碼中的問題。

預設啟用的 rustc linter 可檢測基本的 Rust 錯誤,但您可以使用 clippy 來獲得更多 lint。要在 rust-analyzer 中啟用 clippy 整合,請將Rust-analyzer > Check: Command (rust-analyzer.check.command) 設定更改為 clippy 而不是預設的 check。rust-analyzer 擴充套件現在將在您儲存檔案時執行 cargo clippy,並在編輯器和“問題”檢視中直接顯示 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: Debug
rust-analyzer 擴充套件透過Rust Analyzer: Debug命令提供基本的除錯支援,該命令可在命令面板(⇧⌘P (Windows、Linux Ctrl+Shift+P))和編輯器中的執行|除錯 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 Build Tools 中的 C++ 工具集與 Visual Studio Code 一起使用來編譯、構建和驗證任何程式碼庫,前提是您還擁有有效的 Visual Studio 許可證(無論是 Community、Pro 還是 Enterprise)。
macOS
您可能需要透過在終端中執行 xcode-select --install 來安裝 XCode 工具集。
Linux
您可能需要透過在終端中執行 sudo apt-get install build-essential 來安裝 GCC 工具集(透過 build-essential 包)。
有關進一步的故障排除建議,請參閱 Rust 安裝指南。