Rust工具链管理库cargo-msrv的使用:自动检测和设置项目最低支持Rust版本(MSRV)
Rust工具链管理库cargo-msrv的使用:自动检测和设置项目最低支持Rust版本(MSRV)
cargo-msrv简介
cargo-msrv是一个能帮助你查找Rust crate的最低支持Rust版本(MSRV)的工具库。
安装
通过cargo安装稳定版本
$ cargo install cargo-msrv --locked
通过git源码安装
# 安装稳定版本
$ cargo install --git https://github.com/foresterre/cargo-msrv.git --tag v0.18.4 cargo-msrv
# 安装开发版本
$ cargo install --git https://github.com/foresterre/cargo-msrv.git cargo-msrv
使用示例
查找当前项目的MSRV
# 使用默认的cargo check命令检查兼容性
$ cargo msrv find
# 使用线性搜索(从最新版本开始逐个测试)
$ cargo msrv find --linear
# 指定项目目录
$ cargo msrv --path <dir> find
# 使用自定义命令检查兼容性
$ cargo msrv find -- cargo check --tests
验证项目指定的MSRV是否有效
$ cargo msrv verify
列出依赖项的MSRV
$ cargo msrv list
显示当前项目指定的MSRV
$ cargo msrv show
完整示例
下面是一个完整的使用示例,展示如何查找和设置项目的MSRV:
// 1. 首先安装cargo-msrv
// cargo install cargo-msrv
// 2. 在项目目录中运行以下命令查找MSRV
// cargo msrv find
// 示例输出:
// Searching for the Minimum Supported Rust Version (MSRV)...
// Testing with Rust 1.65.0... success
// Testing with Rust 1.60.0... success
// Testing with Rust 1.55.0... success
// Testing with Rust 1.50.0... failure
// Testing with Rust 1.53.0... success
// Testing with Rust 1.51.0... failure
// Testing with Rust 1.52.0... success
//
// The MSRV is: 1.52.0
// 3. 将找到的MSRV设置到Cargo.toml中
// 在Cargo.toml中添加或修改:
/*
[package]
rust-version = "1.52.0"
*/
// 4. 验证设置的MSRV是否正确
// cargo msrv verify
// 如果验证通过会显示: MSRV 1.52.0 is verified
选项说明
Find your Minimum Supported Rust Version!
Usage: cargo msrv [OPTIONS] <COMMAND>
Commands:
find 查找MSRV
list 显示依赖项的MSRV
set 设置当前crate的MSRV
show 显示Cargo manifest中指定的MSRV
verify 验证MSRV是否满足
help 打印帮助信息
Options:
--path <Crate Directory>
指定cargo项目目录路径
--manifest-path <Cargo Manifest>
指定Cargo manifest文件路径
-h, --help
打印帮助信息
-V, --version
打印版本信息
用户输出选项:
--output-format <FORMAT>
设置用户输出格式
[default: human]
可选值:
- human: 进度条输出到stderr
- json: Json状态更新输出到stdout
- minimal: 最小输出,通常只显示结果
--no-user-output
禁用用户输出
JSON输出格式
可以通过--output-format json
标志启用JSON输出格式:
$ cargo msrv find --output-format json
工作原理
cargo-msrv通过测试项目在不同Rust版本下的编译情况来确定最低支持的Rust版本。它默认使用二进制搜索算法来高效地确定MSRV,也可以使用线性搜索从最新版本开始逐个测试。
许可证
cargo-msrv采用双重许可:
- Apache License, Version 2.0
- MIT license
你可以选择其中任意一种许可证使用。
1 回复