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]
.