由於 Fuchsia 中沒有專門用於 Rust 開發的編輯器,因此 vim
和 VS 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.json
是 rust-analyzer
,導致 rust-analyzer
無法正常運作。
目前支援的版本
目前使用最新版本的 rust-analyzer
。
Visual Studio Code
如要在 VS Code 上設定 rust-analyzer
,請參閱 VS Code 指南
其他與 Fuchsia 程式碼延伸的比較。
皮姆
安裝 rust-lang/rust.vim
,後者也已整合下列項目:
Tagbar:強烈建議使用通用 Ctag,但 也支援其他 Ctag 實作
Syntastic:
rust.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-tests
到 nil
。您可以輸入 C-h v
flycheck-rust-check-tests<RET>
,然後照常自訂變數。
。
現在,請確認您使用的是預設 cargo
和 rustc
就是 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 專案的根目錄方法有以下兩種:
- 針對包含
Cargo.toml
的資料夾開啟新的 Sublime 視窗 (例如garnet/foo/path/to/target
) - 或者前往頂端選單列 ->專案 ->在專案中新增資料夾。這會導致你的所有檔案
,即使同時開啟更廣泛的
fuchsia
資料夾,也能正常運作。
完成上述步驟後,你可能需要重新啟動 Sublime。
Intellij (自訂程式碼完成功能)
請參閱 Intellij Rust 網站的操作說明。
最後,請按照這些步驟產生 Cargo.toml
檔案,供 Intellij 使用。
請注意,貨物型工作流程比以 Rust 分析器為基礎的工作流程更容易中斷。