Expresiones if let
La [expresión if let
][(https://doc.rust-lang.org/reference/expressions/if-expr.html#if-let-expressions) te permite ejecutar código diferente en función de si un valor coincide con un patrón:
fn main() { let arg = std::env::args().next(); if let Some(value) = arg { println!("Program name: {value}"); } else { println!("Missing name?"); } }
Consulta de nuevo la sección de coincidencia de patrones para obtener más información sobre los patrones de Rust.
-
A diferencia de
match
,if let
no tiene que cubrir todas las ramas, pudiendo así conseguir que sea más conciso quematch
. -
Un uso habitual consiste en gestionar valores
Some
al trabajar conOption
. -
A diferencia de
match
,if let
no admite cláusulas guardia para la coincidencia de patrones. -
A partir de la versión 1.65, una construcción let-else similar permite realizar una tarea de desestructuración o, si falla, ejecutar un bloque necesario para anular el flujo de control normal (con
panic
/return
/break
/continue
)::fn main() { println!("{:?}", second_word_to_upper("foo bar")); } fn second_word_to_upper(s: &str) -> Option<String> { let mut it = s.split(' '); let (Some(_), Some(item)) = (it.next(), it.next()) else { return None; }; Some(item.to_uppercase()) }