Desestructurando Arrays

Puedes desestructurar arrays, tuplas y slices haciendo coincidir sus elementos:

#[rustfmt::skip]
fn main() {
    let triple = [0, -2, 3];
    println!("Tell me about {triple:?}");
    match triple {
        [0, y, z] => println!("First is 0, y = {y}, and z = {z}"),
        [1, ..]   => println!("First is 1 and the rest were ignored"),
        _         => println!("All elements were ignored"),
    }
}
  • La desestructuración de slices de longitud desconocida también funciona con patrones de longitud fija.

    fn main() {
        inspect(&[0, -2, 3]);
        inspect(&[0, -2, 3, 4]);
    }
    
    #[rustfmt::skip]
    fn inspect(slice: &[i32]) {
        println!("Tell me about {slice:?}");
        match slice {
            &[0, y, z] => println!("First is 0, y = {y}, and z = {z}"),
            &[1, ..]   => println!("First is 1 and the rest were ignored"),
            _          => println!("All elements were ignored"),
        }
    }
  • Crea un patrón con _ para representar un elemento.

  • Añade más valores al array.

  • Señala cómo .. se expandirá para representar un número distinto de elementos.

  • Muestra las coincidencias de tail con los patrones [.., b] y [a@..,b].