有些crate提供pub const &str
版本字符串,有些则没有。为了有一个通用的解决方案,我需要一个cargo build
在编译过程中已知和使用的所有依赖项及其版本的列表,这样我就可以构建我自己的const &str
* 这是我自己的版本,我编译的所有版本都是 *-输出。
是否可以获得build.rs
中所有依赖项及其版本的列表?Cargo.lock
似乎是一个很好的来源。在build.rs
中解析Cargo.lock
真的合理吗?它是否保证已经更新到Cargo实际使用的内容并写入磁盘?
1条答案
按热度按时间vmdwslir1#
有一个箱子可以装这个:build-info(lib.rs,docs.rs)。
它似乎不能自己生成包含依赖信息的
'static str
,但它会自动解析Cargo.lock
并将相关信息包含到最终的二进制文件中,效果类似。示例代码(
build-info 0.0.32
)如果您不想包含递归依赖项,那么这段代码可能比您需要的要复杂一些。
build.rs网站首页
main.rs网站首页
备选方案
查看cargo-audit和cargo-auditable以获得针对同一问题的面向安全的解决方案,前者甚至在某种程度上适用于本机不包含此功能的程序。不幸的是,虽然
cargo audit bin
可以用来检查已编译的Rust程序中的已知安全漏洞,但我没有看到任何标志可以打印它恢复的库列表。