cfg
条件付きコンパイルは次の2つのオペレータによって行われます。
cfg属性: 属性としての#[cfg(...)]cfg!マクロ: 真偽値式を使ったマクロcfg!(...)
後者は実行時にチェックされ、trueやfalseなどのリテラルも使えます。
どちらも適切な構文で記述する必要があります。
// この関数はターゲットOSがlinuxである場合のみコンパイルされます #[cfg(target_os = "linux")] fn are_you_on_linux() { println!("You are running linux!"); } // この関数はターゲットOSが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!"); } }