Avatar ·

如何在 Rust 程序中获取 Cargo 包的元数据(版本、名称、描述)?

大家好!我正在学习 Rust,并编写一个小型命令行工具。我希望在运行 `--version` 标志时,程序不仅输出版本号,而是类似“MyApp v0.2.1 (2024-05-20)”这样的信息。 问题在于,我不想在代码中硬编码版本——这不对,因为版本已经在 `Cargo.toml` 文件中指定了。如何在编译时或运行时正确提取这些信息? 我尝试过直接读取 `Cargo.toml` 文件,但这样看起来很笨拙,而且在发布构建中可能没有该文件。我听说过 `env!()` 宏,但不知道如何将其与 Cargo 关联。 以下是我当前结构的示例: ```rust fn main() { // 如何从 Cargo.toml 获取版本? println!("MyApp v{}", get_version()); } ``` 我需要获取:包名、版本、描述、作者,可能还有 git 提交哈希。请告诉我如何在 Rust 中正确且惯用地实现这一点?有哪些现成的 crate 或内置工具?提前感谢!