• 4个提高Rust项目生产力的工具
  • 发布于 2个月前
  • 85 热度
    0 评论
一,cargo-machete
cargo-machete是一个Cargo插件,用于从项目中删除未使用的依赖项。要安装它,你可以使用如下命令安装:
cargo install cargo-machete
然后在Rust项目根目录中运行以下命令:
cargo machete
返回代码指示是否找到了未使用的依赖项:
0,表示cargo-machete没有发现未使用的依赖项
1,发现至少一个未使用的依赖项
2,表示在处理过程中出现错误(在这种情况下,没有指示是否找到了未使用的依赖项)。

二,Testcontainers
为项目在本地添加的基础设施进行测试可能相当棘手,Testcontainers的目标是通过提供一个开源框架来解决这个问题,该框架为你的应用程序提供本地轻量级容器,这些容器在使用后可以立即丢弃。它还有一个Rust SDK!

使用如下命令把它添加到一个项目中:
cargo add testcontainers
然后,我们需要在想要的特性旁边添加另一个名为testcontainers-modules的依赖项(对于我们想要使用的容器)。对于这个例子,让我们使用一个Postgres数据库:
cargo add testcontainers-modules -F postgres
当测试我们的应用程序时,我们实例化了test_containers客户端,并通过在测试中添加以下代码来运行Postgres实例:
#[cfg(test)]
mod tests {
    use testcontainers_modules::{postgres::Postgres, testcontainers::clients::Cli};

    #[test]
    fn connect_to_database() {
    // 启动模块
    let docker = Cli::default();
    let node = docker.run(Postgres::default());

    // 准备连接字符串
    let connection_string = &format!(
        "postgres://postgres:postgres@127.0.0.1:{}/postgres",
        node.get_host_port_ipv4(5432)
    );

    // 剩下的代码
    }
}
当运行此测试时,它将您创建一个Postgres容器(通过Docker),然后可以使用上述格式为自己提供连接字符串。从那里,可以连接到Postgres实例并执行所需的任何测试。一旦测试完成,容器就会被移除——这是为了提供代码隔离(这样你的测试就不依赖于其他测试的成功)。

三,tokio-console
tokio-console是一个对于使用Tokio的Rust异步程序的调试器。首先,将console-subscriber库添加到项目中,并添加以下行,这将初始化订阅者并允许tokio-console连接到它:
console_subscriber::init();
注意,目前,为了从Tokio收集任务数据,必须启用tokio_unstable cfg选项。可以通过Rustflags来实现这一点,也可以将其作为参数添加到.cargo/config.toml文件中:
[build]
rustflags = ["--cfg", "tokio_unstable"]
然后,使用如下命令安装tokio-console:
cargo install tokio-console
默认情况下,它将尝试连接端口6669,但你可以通过传入你想要控制台连接的URL字符串来改变这一点:
cargo run -- http://localhost:8000
在成功连接时,它应该显示如下内容:

tokio-console显著改进了Rust异步调试,使编写Rust异步程序更加清晰。

四,cargo-flamegraph
cargo-flamegraph是一个用Rust编写生成火焰图的程序,火焰图是分布式请求跟踪的可视化,最初是用Perl编写的,但现在已经移植到Rust中。

通过使用火焰图,可以更容易地看到错误(例如,竞争条件)可能来自何处,或者可能在何处出现内存泄漏,异常高延迟或难以通过常规日志调试的错误等问题,可以通过这种方式更容易地解决,因为你可以可视化的看到调用堆栈。

使用如下命令安装cargo-flamegraph:
cargo install flamegraph
安装完成后,可以使用cargo flamegraph生成火焰图—可以使用你最喜欢的浏览器或svg查看器程序生成的svg文件。它应该看起来像这样:

随着Rust生态系统的扩展,越来越多的工具出现了,你可以使用它们来增强你的工作流程,提高你的Rust项目生产力。
用户评论