注意: 最新版のドキュメントをご覧ください。この第1版ドキュメントは古くなっており、最新情報が反映されていません。リンク先のドキュメントが現在の Rust の最新のドキュメントです。
スライスや配列に対してマッチを行いたい場合、 slice_patterns
フィーチャを有効にすると以下のように &
を使うことができます。
#![feature(slice_patterns)] fn main() { let v = vec!["match_this", "1"]; match &v[..] { ["match_this", second] => println!("The second element is {}", second), _ => {}, } }
advanced_slice_patterns
フィーチャを有効にすると、スライスにマッチするパターンの中で ..
を使ってその要素の数が任意であることを示すことができます。このワイルドカードは与えるパターン配列の中で一度だけ使うことができます。もし ..
の前に識別子(訳注: 以下の例では inside
)があれば、そのスライスの結果はその識別子名に束縛されます。例えば以下のようになります。
#![feature(advanced_slice_patterns, slice_patterns)] fn is_symmetric(list: &[u32]) -> bool { match list { [] | [_] => true, [x, inside.., y] if x == y => is_symmetric(inside), _ => false } } fn main() { let sym = &[0, 1, 4, 2, 4, 1, 0]; assert!(is_symmetric(sym)); let not_sym = &[0, 1, 7, 2, 4, 1, 0]; assert!(!is_symmetric(not_sym)); }