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 letno tiene que cubrir todas las ramas, pudiendo así conseguir que sea más conciso quematch. - 
Un uso habitual consiste en gestionar valores
Someal trabajar conOption. - 
A diferencia de
match,if letno 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()) }