cfg

Las comprobaciones condicionales de configuración son posibles a través de dos operadores diferentes:

  • el atributo cfg: #[cfg(...)] en la posición del atributo
  • la macro cfg!: cfg!(...) en expresiones booleanas

Mientras que el primero habilita la compilación condicional, el segundo evalúa condicionalmente a literales true o false, lo que permite verificaciones en tiempo de ejecución. Ambos utilizan una sintaxis de argumentos idéntica.

// Esta función solo se compila si el sistema operativo de destino es linux
#[cfg(target_os = "linux")]
fn estas_en_linux() {
    println!("¡Estás ejecutando linux!");
}

// Y esta función solo se compila si el sistema operativo de destino *no* es linux
#[cfg(not(target_os = "linux"))]
fn estas_en_linux() {
    println!("!*No* estás ejecutando linux!");
}

fn main() {
    estas_en_linux();

    println!("¿Estás seguro?");
    if cfg!(target_os = "linux") {
        println!("Si. ¡Definitivamente es Linux!");
    } else {
        println!("Si. ¡Definitivamente * no * es Linux!");
    }
}

Ve también:

la referencia y cfg!.