• Rust开发中常用的7个 Cargo插件
  • 发布于 2个月前
  • 112 热度
    0 评论
在这篇文章中,我们将介绍你应该知道的7个Rust Cargo插件。

1. Cargo watch
cargo watch监视你的项目源文件,并在源文件更改时运行Cargo命令。
安装命令如下:
cargo install cargo-watch
例子如下:
fn main() {
    println!("Hello, world!");
    println!("Hello, cargo-watch!");
}
然后,我们可以在命令行输入以下命令,以便在源文件更改时执行cargo run:
cargo watch -x run
输出如下:
cargo watch -x run
[Running 'cargo run']

Hello, world!
Hello, cargo-watch!
[Finished running. Exit status: 0]
如果我们注释掉第2行,我们的代码将自动重新编译。
[Running 'cargo run']

Hello, cargo-watch!
[Finished running. Exit status: 0]
cargo watch也提供了很多其他的选项,如:
cargo watch -c -q -w ./src -x run
-c 来清空终端
-q 抑制cargo watch本身的输出
-w 关注某个目录,这里只关注src目录。
-x 运行cargo命令

2. Cargo edit
cargo edit 允许你从命令行添加、升级和删除依赖项。
安装命令如下:
cargo install cargo-edit
我们在命令行输入以下命令,将rand 0.7版本添加到项目中:
cargo add rand@0.7
这将自动更新Cargo.toml文件:

如图所示,rang 0.7不是最新版本,我们可以使用以下命令来升级依赖项:
cargo upgrade --incompatible
结果如下:
cargo upgrade --incompatible     
    Updating 'https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index' index
    Checking cargo-plugin-example's dependencies
name old req compatible latest new req
==== ======= ========== ====== =======
rand 0.7     0.7.3      0.8.5  0.8    
   Upgrading recursive dependencies
我们还可以通过以下命令来删除依赖项:
cargo rm rand
3. Cargo modules
cargo modules插件允许我们可视化项目的模块结构,以树状格式显示模块结构。

安装命令如下:
cargo install cargo-modules
在命令行输入以下命令:
cargo modules generate tree
输出结果:
crate cargo_plugin_example
├── mod modules: pub(crate)
└── mod utils: pub(crate)
在这里,我们可以看到默认的crate模块,两个顶级模块models和utils,我们还可以看到每个模块的可见性。

通过添加types,fns标志,我们也可以看到每个模块内部的类型,函数等。
cargo modules generate tree --types --fns
结果如下:
crate cargo_plugin_example
├── fn main: pub(crate)
├── mod modules: pub(crate)
│   └── struct Message: pub
└── mod utils: pub(crate)
    └── fn msg_helpers: pub
4. Cargo audit
cargo audit检查项目的依赖项是否有任何安全漏洞,这在持续集成中特别有用。

安装命令如下:
cargo install cargo-audit
要审计你的项目,只需输入如下命令:
cargo audit
结果如下:
Fetching advisory database from `https://github.com/RustSec/advisory-db.git`
      Loaded 578 security advisories (from /Users/Justin/.cargo/advisory-db)
    Updating crates.io index
    Scanning Cargo.lock for vulnerabilities (9 crate dependencies)
在我们的项目中,没有发现任何漏洞。

5. Cargo tarpaulin
cargo tarpaulin 是另一个对持续集成非常有用的插件,这个插件计算项目的代码覆盖率。
安装命令如下:
cargo install cargo-tarpaulin
在项目根目录下,输入如下命令:
cargo tarpaulin
结果如下:
|| Uncovered Lines:
|| src/main.rs: 6-9
|| src/utils.rs: 1
|| Tested/Total Lines:
|| src/main.rs: 0/4 +0.00%
|| src/utils.rs: 0/1 +0.00%
|| 
0.00% coverage, 0/5 lines covered, +0.00% change in coverage
6. Cargo nextest
cargo-nextest 是新一代的rust测试程序,它提供了漂亮的测试结果,片状的测试检测,并且在某些代码库上可以将测试运行速度提高60倍。
安装命令如下:
cargo install cargo-nextest
要使用cargo-nextest执行测试,需要在命令行执行如下命令:
cargo nextest run
结果如下:

正如你所看到的,输出是有组织的,并且具有漂亮的颜色,这有助于提高可读性。

7. Cargo make
cargo-make 是rust的任务运行器和构建工具,它允许你定义一组任务并在流程中运行它们,任务可以在toml文件中定义。

安装命令如下:
cargo install cargo-make
在项目根目录下创建build.toml文件,内容如下:
[tasks.format]
command = "cargo"
args = ["fmt", "--", "--emit=files"]

[tasks.clean]
command = "cargo"
args = ["clean"]

[tasks.build]
command = "cargo"
args = ["build"]
dependencies = ["clean"]

[tasks.test]
command = "cargo"
args = ["nextest", "run"]
dependencies = ["clean"]

[tasks.build-flow]
dependencies = [
    "format",
    "build",
    "test"
]
它包括几个任务:格式化代码,清理代码,构建代码,测试代码。最后定义一个构建流程,按流程给定顺序执行任务。

在命令行执行如下命令执行cargo make:
cargo make --makefile build.toml build-flow
结果如下:

至此,你应该知道的7个Rust Cargo插件已经介绍完了,希望对你有所帮助。
用户评论