O Cargo passa alguns metadados para o compilador através de variáveis de ambiente, cuja lista pode ser encontrada nas páginas de documentação do Cargo .
O ambiente do compilador é preenchido fill_env
no código do Cargo. Esse código se tornou mais complexo desde as versões anteriores, e a lista inteira de variáveis não é mais óbvia, porque pode ser dinâmica. No entanto, pelo menos as seguintes variáveis são definidas lá (na lista nos documentos):
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
Você pode acessar variáveis de ambiente usando a env!()
macro. Para inserir o número da versão do seu programa, você pode fazer o seguinte:
const VERSION: &'static str = env!("CARGO_PKG_VERSION");
// ...
println!("MyProgram v{}", VERSION);
Se você deseja que seu programa seja compilado mesmo sem o Cargo, você pode usar option_env!()
:
const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION");
// ...
println!("MyProgram v{}", VERSION.unwrap_or("unknown"));