Guardias
Un match
guard se puede agregar para filtrar el brazo.
fn main() { let par = (2, -2); // TODO ^ Prueba diferentes valores para `par` println!("Háblame de {:?}", par); match par { (x, y) if x == y => println!("Estos son mellizos"), // La parte ^ `if condition` es un guardia (x, y) if x + y == 0 => println!("¡Antimateria, kaboom!"), (x, _) if x % 2 == 1 => println!("El primero es impar"), _ => println!("Sin correlación..."), } }
Tenga en cuenta que el compilador no comprueba las expresiones arbitrarias para
comprobar si se han comprobado todas las condiciones posibles. Por lo tanto,
debes utilizar el patrón _
al final.
fn main() { let numero: u8 = 4; match numero { i if i == 0 => println!("Cero"), i if i > 0 => println!("Mayor que cero"), _ => println!("Se cayó"), // Esto no debería ser posible de alcanzar } }