你应该知道的7个Rust Cargo插件

在这篇文章中,我们将介绍你应该知道的7个Rust Cargo插件:

  • Cargo watch

  • Cargo edit

  • Cargo modules

  • Cargo audit

  • Cargo tarpaulin

  • Cargo nextest

  • Cargo make

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文件:

08dc57022f6d02124557f0dbb2b7314b.jpeg

如图所示,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

结果如下:

48dd6b69c23de49c63fa757def70ed4a.jpeg

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

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

结果如下:

9f3d1b59b4fb9f4adead8a3b6e8aece5.jpeg

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

了解更详细的信息,可以观看以下视频:


  推荐阅读 Rust 肥蟹书  

4e4528ec12d76be95bcd8876a5fc70e3.png

《Rust程序设计(第2版)》

吉姆·布兰迪,贾森·奥伦多夫 | 著

汪志成(@雪狼)| 译

本书是 Rust 领域经典参考书,由业内资深系统程序员编写,广受读者好评。书中全面介绍了 Rust 这种新型系统编程语言——具有无与伦比的安全性,兼具 C 和 C++ 的高性能,并大大简化了并发程序的编写。

第 2 版对上一版内容进行了重组和完善,新增了对“异步编程”的介绍。借助书中的大量案例,你也能用 Rust 编写出兼顾安全性与高性能的程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值