Saltar al contenido principal

Expresiones if

  • Los bloques de código asociados a una condición en una expresión if se conocen como arms (al igual que las opciones en match)
  • La condición de la expresión if se escribe sin paréntesis
  • La utilización de else es opcional
  • else solo se ejecuta si if no se cumple
  • Se espera un bool, Rust no intenta convertir valores no booleanos a booleanos
fn main() {
    let age: u8 = 20;

    if age >= 18 {
        println!("+18");
    } else {
        println!("-18");
    }
}

else if

  • Para utilizar varias condiciones
  • Deja de ejecutarse al entrar al if o else if
  • No es lo mismo que crear if individuales, ya que si dos o mas cumplen la condición, ambos se ejecutarían, en cambio else if solo ejecuta el primero que cumpla la condición y no evalúa los siguientes else if
  • Evitar utilizar múltiples else if, por ejemplo si se tiene más de uno entonces se puede refactorizar para utilizar match
fn main() {
    let num: u8 = 4;
    if num % 4 == 0 {
        println!("El número es divisible por 4");
    } else if num % 3 == 0 {
        println!("El número es divisible por 3");
    } else if num % 2 == 0 {
        println!("El número es divisible por 2");
    } else {
        println!("El número no es divisible por 4, 3 o 2");
    }
}

Uso de if en una declaración de variable (let)

  • if y else deben retornar el mismo tipo de dato
  • Rust necesita saber en tiempo de compilación de qué tipo es la variable (ya que se podría seguir utilizando después), por eso ambos resultados deben devolver el mismo tipo de dato
fn main() { 
let condition = true;
let number = if condition { 5 } else { 6 };

println!("The value of number is: {number}");
}
fn main() {
    let condition: bool = true;
   
    let result: &str = if condition { "true" } else { "false" };
   
    println!("Result: {result}");
}