W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
appendix-04-useful-development-tools.md
commit efbafdba3618487fbc9305318fcab9775132ac15
本附錄,我們將討論 Rust 項目提供的用于開發(fā) Rust 代碼的工具。
rustfmt
工具根據(jù)社區(qū)代碼風格格式化代碼。很多項目使用 rustfmt
來避免編寫 Rust 風格的爭論:所有人都用這個工具格式化代碼!
安裝 rustfmt
:
$ rustup component add rustfmt
這會提供 rustfmt
和 cargo-fmt
,類似于 Rust 同時安裝 rustc
和 cargo
。為了格式化整個 Cargo 項目:
$ cargo fmt
運行此命令會格式化當前 crate 中所有的 Rust 代碼。這應(yīng)該只會改變代碼風格,而不是代碼語義。請查看 該文檔 了解 rustfmt
的更多信息。
如果你編寫過 Rust 代碼,那么你可能見過那些有很明顯修復(fù)方式的編譯器警告。例如,考慮如下代碼:
文件名: src/main.rs
fn do_something() {}
fn main() {
for i in 0..100 {
do_something();
}
}
這里調(diào)用了 do_something
函數(shù) 100 次,不過從未在 for
循環(huán)體中使用變量 i
。Rust 會警告說:
$ cargo build
Compiling myprogram v0.1.0 (file:///projects/myprogram)
warning: unused variable: `i`
--> src/main.rs:4:9
|
4 | for i in 0..100 {
| ^ help: consider using `_i` instead
|
= note: #[warn(unused_variables)] on by default
Finished dev [unoptimized + debuginfo] target(s) in 0.50s
警告中建議使用 _i
名稱:下劃線表明該變量有意不使用。我們可以通過 cargo fix
命令使用 rustfix
工具來自動采用該建議:
$ cargo fix
Checking myprogram v0.1.0 (file:///projects/myprogram)
Fixing src/main.rs (1 fix)
Finished dev [unoptimized + debuginfo] target(s) in 0.59s
如果再次查看 src/main.rs,會發(fā)現(xiàn) cargo fix
修改了代碼:
文件名: src/main.rs
fn do_something() {}
fn main() {
for _i in 0..100 {
do_something();
}
}
現(xiàn)在 for
循環(huán)變量變?yōu)?nbsp;_i
,警告也不再出現(xiàn)。
cargo fix
命令可以用于在不同 Rust 版本間遷移代碼。版本在附錄 E 中介紹。
clippy
工具是一系列 lint 的集合,用于捕捉常見錯誤和改進 Rust 代碼。
安裝 clippy
:
$ rustup component add clippy
對任何 Cargo 項目運行 clippy 的 lint:
$ cargo clippy
例如,如果程序使用了如 pi 這樣數(shù)學(xué)常數(shù)的近似值,如下:
文件名: src/main.rs
fn main() {
let x = 3.1415;
let r = 8.0;
println!("the area of the circle is {}", x * r * r);
}
在此項目上運行 cargo clippy
會導(dǎo)致這個錯誤:
error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly
--> src/main.rs:2:13
|
2 | let x = 3.1415;
| ^^^^^^
|
= note: #[deny(clippy::approx_constant)] on by default
= help: for further information visit https://rust-lang-nursery.github.io/rust-clippy/master/index.html#approx_constant
這告訴我們 Rust 定義了更為精確的常量,而如果使用了這些常量程序?qū)⒏訙蚀_。如下代碼就不會導(dǎo)致 clippy
產(chǎn)生任何錯誤或警告:
文件名: src/main.rs
fn main() {
let x = std::f64::consts::PI;
let r = 8.0;
println!("the area of the circle is {}", x * r * r);
}
請查看 其文檔 來了解 clippy
的更多信息。
為了幫助 IDE 集成,Rust 社區(qū)建議使用 rust-analyzer
。這個工具是一組以編譯器為中心的實用程序,它實現(xiàn)了 Language Server Protocol(一個 IDE 與編程語言之間的通信規(guī)范)。rust-analyzer
可以用于不同的客戶端,比如 Visual Studio Code 的 Rust analyzer 插件。
訪問 rust-analyzer
項目的 主頁 來了解如何安裝安裝它,然后為你的 IDE 安裝 language server 支持。如此你的 IDE 便會獲得如自動補全、跳轉(zhuǎn)到定義和 inline error 之類的功能。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: