建構
Rust 專案應使用以下四種 GN 目標範本:
rustc_library
定義程式庫,並視需要定義單元測試目標。這個程式庫可以依其他目標運作。rustc_binary
定義執行檔,以及選用單元測試目標。rustc_test
定義僅供測試的目標。rustc_macro
定義程序巨集目標。
examples/rust 目錄包含使用這些目標的 Rust 套件範例,以及 Rust FIDL 範例。
Cargo.toml
您無法使用 Cargo 建構 Fuchsia Rust 目標,也就是說,您可以產生 Cargo.toml 檔案,以便與外部工具搭配使用。我們不保證這項功能可以正常運作。
自動產生的說明文件
取得目標的 Cargo.toml 後,請執行下列指令產生及瀏覽目標及其依附元件的 HTML 說明文件:
fx rustdoc path/from/fuchsia/root/to/target:label --open
測試
您可以使用 fx
和 fx test
{package name}
指令,在已連結的裝置上執行單元測試。如要瞭解如何新增及執行測試,請參閱「測試 Rust 程式碼」。
程序巨集
系統會在主機執行編譯巨集目標。因此,這些 Crate 無法取決於裝置專用的其他 Crate (例如 zircon)。
系統目前不支援負數測試,例如斷言巨集無法以特定錯誤進行編譯。
警告和錯誤
根據預設,我們的建構設定會將所有 Rust 警告變成錯誤。這項規定在開發期間可能會更嚴格,因此您可能要在本機電腦上看到警告訊息,然後讓 CQ 強制執行強制邊界。
deny_warnings
GN 引數可讓您在開發環境中控管這個行為。
在 fx args
中設定 deny_warnings = false
或將 --args=deny_warnings=false
新增至 fx set
可讓您在本機進行開發,而不會遭警告封鎖。您可在結帳時將引數新增至 local/args.gn
,這樣引數就會套用至所有建構,而不需每次在終端機中輸入引數。
樣式
我們目前沒有 Rust 的樣式指南,但請先執行 fx rustfmt
或 fx format-code
,再提交內容。我們大多使用 rustfmt 預設值,但有幾項自訂設定。
Rust 慣用使用情形綜覽
如果您是 Rust 新手,或是想要有人審查變更,以驗證您使用 Rust 是否符合慣用做法,請將「Fuchsia Rust 審查人員」新增為 Gerrit 中 CL 的審查人員,並指派審查人員。
如有任何問題,請來信至 tq-rust-reviewers@google.com。
通訊管道
公開討論會在 rust-users@fuchsia.dev 郵寄清單中進行。