1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-06-27 11:08:45 +02:00
Files
comprehensive-rust/src/pattern-matching/destructuring-arrays.md
Charisee Chiw 59d3d7f625 Indent code in speaker notes (#476)
* Indent code in speaker notes

#475

* Update stack.md

* Update destructuring-arrays.md

* Update hashmap.md

* Update traits.md
2023-03-11 14:12:32 -08:00

1.0 KiB

Destructuring Arrays

You can destructure arrays, tuples, and slices by matching on their elements:

{{#include ../../third_party/rust-by-example/destructuring-arrays.rs}}
  • Destructuring of slices of unknown length also works with patterns of fixed length.

    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"),
        }
    }
    
  • Create a new pattern using _ to represent an element.

  • Add more values to the array.

  • Point out that how .. will expand to account for different number of elements.

  • Show matching against the tail with patterns [.., b] and [a@..,b]