條件編譯可以透過兩種不同的運算子實現,如下:
- cfg屬性:在屬性位置中使用#[cfg(。。。)]
- cfg!宏:在布林表示式中使用cfg!(。。。)
例子1:
// 僅當目標系統為Linux 的時候才會編譯
#[cfg(target_os = “linux”)]
fn are_you_on_linux() {
println!(“linux!”)
}
// 僅當目標系統不是Linux 時才會編譯
#[cfg(not(target_os = “linux”))]
fn are_you_on_linux() {
println!(“not linux!”)
}
fn main() {
are_you_on_linux();
println!(“Are you sure?”);
if cfg!(target_os = “linux”) {
println!(“Yes。 It‘s linux!”);
} else {
println!(“Yes。 It’s not linux!”);
}
}
例子2:
//main。rs
#[cfg(some_condition)]
fn conditional_function() {
println!(“condition met!”);
}
fn main() {
conditional_function();
println!(“Hello, world!”);
}
執行:rustc main。rs && 。/main(報錯)
執行:rustc ——cfg some_condition main。rs && 。/main