Control de Flujo Let
Rust tiene algunas construcciones de control de flujo que difieren de otros lenguajes. Se utilizan para el patrón de coincidencia:
- Expresiones
if let
- Expresiones
let else
- Expresiones
while let
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:
Expresiones let else
En el caso habitual de coincidencia con un patrón y retorno de la función, utiliza let else
. El caso “else” debe divergir (return
, break
o pánico; cualquier acción es válida menos colocarlo al final del bloque).
Al igual que con if let
, hay una variante while let
que prueba repetidamente un valor con respecto a un patrón:
Aquí, String::pop
devolverá Some(c)
hasta que la cadena este vacía, cuando empezara a devolver None
. while let
nos permite seguir iterando a través de todos los elementos.
Speaker Notes
This slide should take about 10 minutes.
if-let
- 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.
let-else
Las instrucciones if-let
se pueden apilar, tal y como se muestra. La construcción let-else
permite aplanar este código anidado. Reescribe esta rara versión para que los participantes puedan ver la transformación.
La versión reescrita es la siguiente:
while-let
- Señala que el bucle
while let
seguirá funcionando siempre que el valor coincida con el patrón. - Puedes reescribir el bucle
while let
como un ciclo infinito con una instrucción if que rompe el bucle siname.pop()
no devuelve un valor para desenvolver.while let
proporciona azúcar sintáctico para la situación anterior.