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 verificar estáticamente 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
letpara 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.