Условная компиляция возможна благодаря двум операторам:
cfg: #[cfg(...)], который указывается на месте атрибутаcfg!: cfg!(...), который можно использовать в условных выраженияхОбе инициализации имеют идентичный синтаксис для принятия аргументов.
// Эта функция будет скомпилирована только в том случае, если целевая OS будет linux
#[cfg(target_os = "linux")]
fn are_you_on_linux() {
println!("You are running linux!")
}
// А эта функция будет скомпилирована только в том случае *не* linux
#[cfg(not(target_os = "linux"))]
fn are_you_on_linux() {
println!("You are *not* running linux!")
}
fn main() {
are_you_on_linux();
println!("Are you sure?");
if cfg!(target_os = "linux") {
println!("Yes. It's definitely linux!");
} else {
println!("Yes. It's definitely *not* linux!");
}
}the reference, cfg!, и макросы.