Условная компиляция возможна благодаря двум операторам:
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!
, и макросы.