示例程序:
use std::io;
use std::cmp::Ordering;
fn main() {
let mut s = String::new();
io::stdin().read_line(&mut s).unwrap();
let num : i32 = s.trim().parse().unwrap();
match num.cmp(&23) {
Ordering::Less => println!("smaller"),
Ordering::Greater => println!("bigger"),
Ordering::Equal => println!("same"),
}
}
上述程序會從命令行輸入一個整數(讀入到s並解析到)num,並判斷 num 和 23 的大小:
- 若 num 小於 23,輸出 “smaller”;
- 若 num 等於 23,輸出 “same”;
- 若 num 大於 23,輸出 “bigger”。
std::cmp::Ordering
是標准庫中的一個枚舉類型,它擁有 Less、Greater 及 Equal 這3個變體。它們分別用來表示比較兩個數字的大小之后可能產生的3種結果。
cmp
方法能夠為任何可比較的值類型計算出它們比較后的結果。本例中的 cmp 方法接收了被比較值23
的引用作為參數來與 num 進行比較,他會返回一個Ordering類型的變體。然后我們會給予該返回值的具體內容使用match表達式來決定下一步的代碼。
match表達式由數個 分支(arm) 組成,每個分支都包含一個用於匹配的 模式(pattern),以及匹配成功后要執行的相應的代碼。Rust會嘗試用我們傳入match表達式的值去依次匹配每個分支的模式,一旦匹配成功,它就會執行當前分支的代碼。