cfg

環境に応じたコンパイルをするには2種類の方法があります。

  • cfgアトリビュート: #[cfg(...)]をアトリビュートとして使用する。
  • cfg!マクロ: cfg!(...)をブーリアンとして評価する。

いずれの場合も適切なシンタックスで記述する必要があります。

// This function only gets compiled if the target OS is linux
// この関数はターゲットOSがLinuxの時のみコンパイルされる。
#[cfg(target_os = "linux")]
fn are_you_on_linux() {
    println!("You are running linux!");
}

// And this function only gets compiled if the target OS is *not* 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!");
    }
}

参照

参照(reference), cfg!, マクロ.