Rust Cargo 中 Top 10 的命令
大家好,我是螃蟹哥。
Cargo 是 Rust 的包管理器,是一個功能強大的工具,可以讓 Rust 編程變得非常有趣。它提供了可以在你日常編程中使用的各種命令。Cargo 支持的命令列表可以通過社區編寫的 Rust crates 進行擴展。
一系列命令使 Cargo 成爲任何 Rust 開發人員都值得了解的多功能工具。
本文講解一系列值得了解和使用的有用 Cargo 命令。
最重要的 Cargo 指令
1. cargo install [options] crate...
cargo install 用於構建和安裝 Rust 二進制文件。可以從多個來源安裝 crate。默認位置是 crates.io,但是--git
,--path
和--registry
選項可以更改源。
示例:cargo install sqlx
是使用 cargo 從 crates.io 安裝 sqlx crate。
2. cargo uninstall [options] [spec...]
顧名思義,這個命令會刪除一個用 cargo install 安裝的包。
3. cargo tree [options]
cargo 樹將顯示對終端的依賴關係樹。一個依賴於 “rand” 包的簡單項目的例子:
myproject v0.1.0 (/myproject)
└── rand v0.7.3
├── getrandom v0.1.14
│ ├── cfg-if v0.1.10
│ └── libc v0.2.68
├── libc v0.2.68 (*)
├── rand_chacha v0.2.2
│ ├── ppv-lite86 v0.2.6
│ └── rand_core v0.5.1
│ └── getrandom v0.1.14 (*)
└── rand_core v0.5.1 (*)
[build-dependencies]
└── cc v1.0.50
4. cargo search [options] [query...]
這會在 crates.io 上對 crate 執行文本搜索。匹配的 crate 將與它們的描述一起以複製到 Cargo.toml 清單,以 TOML 格式顯示。
使用 cargo 搜索的例子是:cargo search serde
,它返回一個帶有文本 serde 的行的 crate 列表和一個包含它們的版本號的描述。
serde = "1.0.130" # A generic serialization/deserialization framework
discord_typed_interactions = "0.1.0" # suppose you're working with discord slash commands and you want statically typed requ…
serde_json_experimental = "1.0.29-rc1" # A JSON serialization file format
alt_serde_json = "1.0.61" # A JSON serialization file format
serde_json = "1.0.70" # A JSON serialization file format
serde_partiql = "1.1.65" # A PartiQL data model serialization file format
cargo-geiger = "0.11.1" # Detects usage of unsafe Rust in a Rust crate and its dependencies.
serde-encrypt = "0.6.0" # Encrypts all the Serialize
serde-encrypt-core = "0.6.0" # Encrypts all the Serialize
typescript-definitions = "0.1.10" # serde support for exporting Typescript definitions
... and 2787 crates more (use --limit N to see more)
5. cargo-edit
此工具擴展 Cargo 以允許你通過從命令行修改 Cargo.toml 文件來添加、刪除和升級依賴項。
當前可用的子命令包括:
-
cargo add
-
cargo rm
-
cargo upgrade
-
cargo set-version
要使用 cargo-edit,你需要先安裝它,cargo install cargo-edit
因爲它是一個 cargo 擴展。
6. cargo +nightly udeps
cargo-udeps 用於在 Cargo.toml 中查找未使用的依賴項。
雖然這個工具的編譯也適用於 Rust stable,但它需要 nightly Rust 才能實際運行。cargo-udeps
是一個 cargo 擴展,所以你必須先安裝才能使用。
你可以通過以下命令安裝 cargo install cargo-udeps --locked
。
7. cargo expand
安裝後,cargo expand
打印出應用於當前 crate 的宏擴展結果和 #[derive]
擴展。這是詳細的編譯器命令的包裝器:cargo rustc --profile=check -- -Zunpretty=expanded
。
通過以下命令安裝 cargo install cargo-expand
.
使用 cargo-expand 的例子
#[derive(Debug)]
struct S;
fn main() {
println!("{:?}", S);
}
cargo expand:
#[prelude_import]
use std::prelude::v1::*;
#[macro_use]
extern crate std;
struct S;
#[automatically_derived]
#[allow(unused_qualifications)]
impl ::core::fmt::Debug for S {
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match *self {
S => {
let mut debug_trait_builder = f.debug_tuple("S");
debug_trait_builder.finish()
}
}
}
}
fn main() {
{
::std::io::_print(::core::fmt::Arguments::new_v1(
&["", "\n"],
&match (&S,) {
(arg0,) => [::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Debug::fmt)],
},
));
};
}
8. cargo tarpaulin
Tarpaulin 是 Cargo 構建系統的代碼覆蓋率報告工具。
通過以下命令安裝:cargo install cargo-tarpaulin
。目前 tarpaulin 僅適用於運行 Linux 的 x86_64 CPU 架構。cargo tarpaulin --ignore-tests
用於計算應用程序的代碼覆蓋率,同時忽略測試功能。
9. cargo audit
cargo audit 可以通過命令 cargo install cargo-audit
安裝並用於審覈 Cargo.lock 文件,以查找向 RustSec 諮詢數據庫 報告的具有安全漏洞的 crate。
10. cargo deny
cargo-deny 是一個 cargo 插件,可讓你檢查項目的依賴關係圖,以確保所有依賴項符合你的期望和要求。
它用於審覈 Cargo.lock 文件中是否存在安全漏洞、限制特定依賴項的使用、它們的許可證、下載源、檢測依賴項樹中相同包的多個版本等等。
用 cargo install --locked cargo-deny && cargo deny init && cargo deny check
安裝 cargo-deny,使用默認配置初始化你的項目,然後針對你的項目運行所有檢查。
以下示例檢查許可,用於驗證你使用的每個 crate 是否具有你認爲可接受的許可條款。
cargo deny check licenses
要了解有關如何使用 cargo deny
的更多信息,訪問 https://embarkstudios.github.io/cargo-deny/。
Cargo 命令的列表非常多,本文提供了其中的一個小示例,你可以使用它們,希望你瞭解 Cargo 的強大功能。
原文鏈接:https://dev.to/davidadewoyin/top-rust-cargo-commands-2b70
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/ckzgn0JzdHM8Q7TdNjUdBw