Cargo transmet certaines métadonnées au compilateur via des variables d'environnement, dont une liste se trouve dans les pages de documentation de Cargo .
L'environnement du compilateur est rempli par fill_env
dans le code de Cargo. Ce code est devenu plus complexe depuis les versions précédentes, et la liste entière des variables n'en ressort plus évidente car elle peut être dynamique. Cependant, au moins les variables suivantes y sont définies (à partir de la liste de la documentation):
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
Vous pouvez accéder aux variables d'environnement à l'aide de la env!()
macro. Pour insérer le numéro de version de votre programme, vous pouvez le faire:
const VERSION: &'static str = env!("CARGO_PKG_VERSION");
// ...
println!("MyProgram v{}", VERSION);
Si vous voulez que votre programme se compile même sans Cargo, vous pouvez utiliser option_env!()
:
const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION");
// ...
println!("MyProgram v{}", VERSION.unwrap_or("unknown"));
Vladimir Matveev
la source