Patrones y Desestructuración
Cuando uno trabaja con tuplas y otros valores estructurados, es común querer extraer valores interiores a variables locales. Uno puede manualmente acceder los valores interiores:
fn print_tuple(tuple: (i32, i32)) { let left = tuple.0; let right = tuple.1; println!("left: {left}, right: {right}"); }
Rust también provee la coincidencia de patrones para destructurar un valor en sus partes constituyentes:
fn print_tuple(tuple: (i32, i32)) { let (left, right) = tuple; println!("left: {left}, right: {right}"); }
This slide should take about 5 minutes.
- Los patrones usados aquí son "irrefutables", es decir que el compilador puede estáticamente verificar que el valor a la derecha del
=
tiene la misma estructura que el patrón. - Un nombre de variable es un patrón irrefutable que siempre coincide con cualquier valor, así que también podemos usar
let
para declarar una sola variable. - Los patrones también se pueden usar en los condicionales, dejando que la comparación de igualdad y el desestructuramiento ocurren al mismo tiempo. Esta forma de coincidencia de patrones sera discutido mas a fondo mas tarde.
- Edita los ejemplos anteriores para enseñar el error de compilador cuando el patrón no coincide con el valor.