配列とスライス
タプル同様、配列とスライスも以下のようにデストラクトできます。
fn main() {
// 配列中の値を変更してみましょう。または、スライスにしてみましょう。
let array = [1, -2, 6];
match array {
// 2番目と3番目の要素を変数に束縛します。
[0, second, third] =>
println!("array[0] = 0, array[1] = {}, array[2] = {}", second, third),
// _で値を無視できます。
[1, _, third] => println!(
"array[0] = 1, array[2] = {} and array[1] was ignored",
third
),
// いくつかの値を束縛して残りを無視できます。
[-1, second, ..] => println!(
"array[0] = -1, array[1] = {} and all the other ones were ignored",
second
),
// 以下のコードはコンパイルできません。
// [-1, second] => ...
// 別の配列やスライスに値を持たせることもできます。
// (配列かスライスかは、マッチする値の型により異なります)
[3, second, tail @ ..] => println!(
"array[0] = 3, array[1] = {} and the other elements were {:?}",
second, tail
),
// 例えば、これらのパターンを組み合わせて、
// 最初と最後の値を束縛し、残りの値を配列に持たせることもできます。
[first, middle @ .., last] => println!(
"array[0] = {}, middle = {:?}, array[2] = {}",
first, middle, last
),
}
}