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.