Cargo przekazuje niektóre metadane do kompilatora poprzez zmienne środowiskowe, których listę można znaleźć na stronach dokumentacji Cargo .
Środowisko kompilatora jest wypełniane przez fill_env
w kodzie Cargo. Ten kod stał się bardziej złożony od czasu wcześniejszych wersji, a cała lista zmiennych nie jest już z niego oczywista, ponieważ może być dynamiczna. Jednak przynajmniej następujące zmienne są tam ustawione (z listy w dokumentacji):
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
Dostęp do zmiennych środowiskowych można uzyskać za pomocą env!()
makra. Aby wstawić numer wersji programu, możesz to zrobić:
const VERSION: &'static str = env!("CARGO_PKG_VERSION");
// ...
println!("MyProgram v{}", VERSION);
Jeśli chcesz, aby Twój program kompilował się nawet bez Cargo, możesz użyć option_env!()
:
const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION");
// ...
println!("MyProgram v{}", VERSION.unwrap_or("unknown"));