如何知道我所在的 Rust 箱的版本号?

Swi*_*Run 3 rust rust-crates rust-cargo

有没有一种可靠的方法(也许是货物 CLI 中的某些东西)来获取板条箱的版本?

我可以在 Cargo.toml 上进行 grep,但我正在寻找 6 个月内不会损坏的东西。

有没有更好的办法?

kmd*_*eko 6

获取有关包或工作区元数据的一般方法是通过cargo metadata命令,该命令会生成包含工作区包、依赖项、目标等的 JSON 输出。但是它非常冗长。

如果您不在工作区中,那么您可以简单地获取第一个包的版本,不包括依赖项(使用 解析jq):

> cargo metadata --format-version=1 --no-deps | jq '.packages[0].version'
"0.1.0"
Run Code Online (Sandbox Code Playgroud)

但是,如果您在工作区中,则会有多个包(即使在排除依赖项之后)并且似乎按字母顺序排列。您需要知道包的名称:

> cargo metadata --format-version=1 --no-deps | jq '.packages[] | select(.name == "PACKAGE_NAME") | .version'
"0.1.0"
Run Code Online (Sandbox Code Playgroud)