Cargo通过环境变量将一些元数据传递给编译器,其中的列表可以在 货物文件页面 。
编译器环境由填充 fill_env 在Cargo的代码中。自早期版本以来,此代码变得更加复杂,并且整个变量列表不再明显,因为它可以是动态的。但是,至少在那里设置了以下变量(从文档列表中):
fill_env
CARGO_MANIFEST_DIR CARGO_PKG_AUTHORS CARGO_PKG_DESCRIPTION CARGO_PKG_HOMEPAGE CARGO_PKG_NAME CARGO_PKG_REPOSITORY CARGO_PKG_VERSION CARGO_PKG_VERSION_MAJOR CARGO_PKG_VERSION_MINOR CARGO_PKG_VERSION_PATCH CARGO_PKG_VERSION_PRE
您可以使用。访问环境变量 env!() 宏。要插入程序的版本号,您可以执行以下操作:
env!()
const VERSION: &'static str = env!("CARGO_PKG_VERSION"); // ... println!("MyProgram v{}", VERSION);
如果您希望程序在没有Cargo的情况下编译,您可以使用 option_env!() :
option_env!()
const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION"); // ... println!("MyProgram v{}", VERSION.unwrap_or("unknown"));
该 内置 -crate有助于在没有所有样板的情况下序列化许多Cargo的环境。