![](/img/trans.png)
[英]Using a crate in a Cargo project errors with “maybe a missing extern crate”
[英]Is it possible to get the Cargo environment variable information for one crate using another crate?
我有一個提供此功能的板條箱:
pub fn version_info() -> u16 {
// simplified for minimal example
env!("CARGO_PKG_VERSION_MAJOR").parse().unwrap()
}
如果我這樣使用庫,我將獲得庫箱的主要版本:
use mylib;
fn main() {
println!("{}", mylib::version_info());
}
是否有可能獲得“當前”板條箱的主要版本但使用另一個板條箱來獲得它?
CARGO_PKG_VERSION_MAJOR
和其他CARGO_*
變量由 Cargo 在編譯箱( Cargo 參考)期間設置,因此,例如,您無法在運行時使用std::env::var
讀取它。
一種方法是在mylib
中編寫一個宏:
macro_rules! version_info {
() => {
env!("CARGO_PKG_VERSION_MAJOR").parse::<u32>().unwrap()
}
}
並在您的板條箱中使用它(注意!
):
use mylib;
fn main() {
println!("{}", mylib::version_info!());
}
宏在編譯期間得到擴展,並且 Cargo 變量可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.