cfg

条件付きコンパイルは次の2つのオペレータによって行われます。

  • cfg属性: 属性としての#[cfg(...)]
  • cfg!マクロ: 真偽値式を使ったマクロcfg!(...)

後者は実行時にチェックされ、truefalseなどのリテラルも使えます。 どちらも適切な構文で記述する必要があります。

// この関数はターゲット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!");
    }
}

こちらも参照: