Rust 編輯器設定

由於 Fuchsia 中沒有專門用於 Rust 開發的編輯器,因此 vimVS Code 是 最常用的選項。不過,請參閱本文件,瞭解如何設定編輯器。

rust-analyzer 設定

rust-analyzer 是一種語言伺服器通訊協定 (LSP) Rust 的實作。這是建議的工作流程,且僅須設定極少量的編輯器設定。

rust-analyzer 會使用 out/ 目錄中名為 rust-project.json 的檔案,此檔案會 依據 gn gen 時的建構圖表產生。rust-project.json的符號連結位於 位於 Fuchsia 樹狀結構的根目錄中。

rust-project.json 檔案格式目前不穩定。這有時會導致 GN 產生的 rust-project.jsonrust-analyzer ,導致 rust-analyzer 無法正常運作。

目前支援的版本

目前使用最新版本rust-analyzer

Visual Studio Code

如要在 VS Code 上設定 rust-analyzer,請參閱 VS Code 指南 其他與 Fuchsia 程式碼延伸的比較

皮姆

安裝 rust-lang/rust.vim,後者也已整合下列項目:

  • Tagbar:強烈建議使用通用 Ctag,但 也支援其他 Ctag 實作

  • Syntasticrust.vim 自動註冊 cargo做為 Rust 的語法檢查工具。但除非設定 Cargo,否則這項作業會失敗。 如要停用整合 (或使用 rust-analyzer 檢查程式碼,例如 YouCompleteMe),將下列指令新增到您的 ~/.vimrc

    let g:syntastic_rust_checkers = []
    
  • 自動格式設定:如要於儲存時執行 rustfmt (預設為停用),請將以下內容新增至 ~./vimrc

    let g:rustfmt_command = 'FUCHSIA_DIR/prebuilt/third_party/rust/HOST_OS/bin/rustfmt'
    let g:rustfmt_autosave = 1
    

如需 IDE 支援,請參閱 rust-analyzer 的 vim 部分 手動。針對 YouCompleteMe,新增 --rust-completer (或 --all) 是從來源安裝,而應會 方塊。您也可以在 ~/.vimrc 中指定獨立 rust-analyzer 的路徑 (這不是 保證可正常運作);這裡提供兩個範例 ~/.local/bin/rust-analyzer (請注意,由於路徑中不含 /bin):

let g:ycm_rust_toolchain_root = $HOME . '/.local'

電子郵件

完成

如需操作說明,請參閱 rust-analyzer 手冊

查看儲存

您將使用 flycheck 來編譯 找出您儲存的 Rust 檔案flycheck 會剖析這些輸出內容 醒目顯示錯誤您也需要使用 flycheck-rust,藉此 透過 Cargo 而非 rustc 進行編譯。兩者都販售於 melpa

請注意,此工作流程是以 Cargo 為基礎,中斷可能低於 以 rust-analyzer 為基礎的工作流程

如果還沒有 melpa,請按照指示進行。 請按這裡

在「M-x list-packages」中安裝「flycheck」和「flycheck-rust」。類型:i 將缺少的內容排入佇列,接著執行 x 來執行。

接著,請確保在啟動時執行 flycheck-rust。請在 .emacs 檔案中放入以下內容:

(with-eval-after-load 'rust-mode
  (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))

建議您 Cargo 執行「檢查」而不是「test」CANNOT TRANSLATE flycheck-rust-check-testsnil。您可以輸入 C-h v flycheck-rust-check-tests<RET>,然後照常自訂變數。 。

現在,請確認您使用的是預設 cargorustc 就是 Fuchsia 版本中的版本。如果還沒試過 安裝擴充功能。接著,從 Fuchsia 根層級輸入:

rustup toolchain link fuchsia FUCHSIA_DIR/prebuilt/third_party/rust/HOST_OS
rustup default fuchsia

最後,請按照相關步驟,為您下的 GN 目標產生 Cargo.toml 圖像和內容

你可以參閱這篇文章 調整 flycheck 以依需求顯示錯誤輸入並自訂 C-h v flycheck-highlighting-mode<RET>。一併自訂 C-h v flycheck-indiation-mode<RET>

現在重新啟動 emacs 並試用看看。

測試並偵錯

如要測試這個架構是否正常運作,您可以執行 M-x flycheck-compile,並查看 flycheck 用來檢查語法的指令列原本就要像一顆一樣 依據您的專案是 lib 或 bin 類型:

cargo check --lib --message-format\=json
cargo check --bin recovery_netstack --message-format\=json

如果執行的是 rustc (而不是 cargo),是因為您沒有 fx gen-cargo

請注意,系統可能會在目前檔案的第一行回報錯誤。這些是 實際上來自其他檔案的錯誤錯誤註解會指出 問題檔案

極簡文字

使用 Rust-Enhanced 進行語法檢查

按照操作說明產生 Cargo.toml.cargo/config,以及 設定 cargo 以使用 Fuchsia Rust 工具鍊。

接著,安裝 Rust Enhanced 外掛程式。 現在,您應該可以檢查儲存的語法,並且能夠cargo check從 內容選單 / 指令區塊面板因為 fargo 的關係,部分測試同樣可以執行,但這已 但每個模型都未經過完整的測試

使用語言伺服器提供情報 / 懸停工具提示 / go-to-definition

設定

首先,安裝 Sublime 適用的 LSP 套件。接著: 請按照 rust-analyzer 設定操作說明進行 Sublime 的目錄

用量

為了讓語言伺服器正常運作,您需要開啟包含 Cargo.toml 的資料夾 做為 Sublime 專案的根目錄方法有以下兩種:

  1. 針對包含 Cargo.toml 的資料夾開啟新的 Sublime 視窗 (例如 garnet/foo/path/to/target)
  2. 或者前往頂端選單列 ->專案 ->在專案中新增資料夾。這會導致你的所有檔案 ,即使同時開啟更廣泛的 fuchsia 資料夾,也能正常運作。

完成上述步驟後,你可能需要重新啟動 Sublime。

Intellij (自訂程式碼完成功能)

請參閱 Intellij Rust 網站的操作說明。 最後,請按照這些步驟產生 Cargo.toml 檔案,供 Intellij 使用。 請注意,貨物型工作流程比以 Rust 分析器為基礎的工作流程更容易中斷。