• 切片模式

    切片模式

    slice-patterns.md


    commit 5cf4139d21073731fa7f7226d941349dbacc16d6

    如果你想在一个切片或数组上匹配,你可以通过slice_patterns功能使用&

    1. #![feature(slice_patterns)]
    2. fn main() {
    3. let v = vec!["match_this", "1"];
    4. match &v[..] {
    5. &["match_this", second] => println!("The second element is {}", second),
    6. _ => {},
    7. }
    8. }

    advanced_slice_patternsgate 让你使用..表明在一个切片的模式匹配中任意数量的元素。这个通配符对一个给定的数组只能只用一次。如果在..之前有一个标识符,结果会被绑定到那个名字上。例如:

    1. #![feature(advanced_slice_patterns, slice_patterns)]
    2. fn is_symmetric(list: &[u32]) -> bool {
    3. match list {
    4. &[] | &[_] => true,
    5. &[x, ref inside.., y] if x == y => is_symmetric(inside),
    6. _ => false
    7. }
    8. }
    9. fn main() {
    10. let sym = &[0, 1, 4, 2, 4, 1, 0];
    11. assert!(is_symmetric(sym));
    12. let not_sym = &[0, 1, 7, 2, 4, 1, 0];
    13. assert!(!is_symmetric(not_sym));
    14. }