鍍金池/ 教程/ Java/ 切片模式
哲學家就餐問題
鏈接進階
名詞中英文對照
測試
引用和借用
泛型
方法語法
函數(shù)
不安全代碼
并發(fā)
裝箱語法和模式
注釋
棧和堆
運算符與重載
語法索引
文檔
固有功能
所有權
循環(huán)
通用函數(shù)調(diào)用語法
不定長類型
<code>const</code> 和 <code>static</code>
迭代器
其他語言中的 Rust
枚舉
詞匯表
If語句
猜猜看
錯誤處理
生命周期
編譯器插件
發(fā)布途徑
閉包
trait 對象
不使用標準庫
關聯(lián)常量
外部函數(shù)接口(FFI)
類型轉(zhuǎn)換
原生類型
匹配
參考文獻
Rust 編程語言
內(nèi)聯(lián)匯編
條件編譯
選擇你的保證
學習 Rust
`type`別名
自定義內(nèi)存分配器
屬性
if let
高效 Rust
可變性
語法和語義
模式
基準測試
結構體
變量綁定
語言項
切片模式
<code>Deref</code> 強制多態(tài)
關聯(lián)類型
裸指針
<code>Borrow</code> 和 <code>AsRef</code>
準備
Rust 開發(fā)版
字符串

切片模式

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_patternsgate 讓你使用..表明在一個切片的模式匹配中任意數(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));
}
上一篇:猜猜看下一篇:變量綁定