Rust programı Kargo paketinden meta verilere nasıl erişebilir?


150

Kargo paketinin meta verilerine (örn. Sürüm) paketteki Rust kodundan nasıl erişirsiniz? Benim durumumda, standart bir --versionbayrağa sahip olmak istediğim bir komut satırı aracı oluşturuyorum ve uygulamanın paketin sürümünü okumasını istiyorum, Cargo.tomlbu yüzden iki yerde tutmak zorunda değilim. Kargo meta verilerine programdan erişmek isteyenlerin başka nedenleri olduğunu hayal edebiliyorum.

Yanıtlar:


220

Cargo, bir listesi Kargo belgeleri sayfalarında bulunabilen ortam değişkenleri aracılığıyla derleyiciye bazı meta verileri iletir .

Derleyici ortamına fill_envCargo kodunda yer verilmiştir. Bu kod önceki sürümlerden bu yana daha karmaşık hale geldi ve değişkenlerin tüm listesi artık dinamik olabileceği için bundan daha açık değil. Ancak, en azından aşağıdaki değişkenler orada ayarlanır (dokümanlardaki listeden):

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

Ortam değişkenlerine env!()makroyu kullanarak erişebilirsiniz . Programınızın sürüm numarasını eklemek için bunu yapabilirsiniz:

const VERSION: &'static str = env!("CARGO_PKG_VERSION");

// ...

println!("MyProgram v{}", VERSION);

Programınızın Kargo olmadan bile derlenmesini istiyorsanız, aşağıdakileri kullanabilirsiniz option_env!():

const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION");

// ...

println!("MyProgram v{}", VERSION.unwrap_or("unknown"));

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.