slice-patterns.md
commit 024aa9a345e92aa1926517c4d9b16bd83e74c10d
如果你想在一個切片或數(shù)組上匹配,你可以通過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
gate 讓你使用..
表明在一個切片的模式匹配中任意數(shù)量的元素。這個通配符對一個給定的數(shù)組只能只用一次。如果在..
之前有一個標識符,結果會被綁定到那個名字上。例如:
#![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));
}