Skip to content
On this page

枚举与模式匹配

枚举

最简单的枚举就这样:

rust
enum Coin {
    Penny,
    Nickel,
    Dime,
    Quarter,
}

当然这样可远远不够,我们可以把信息内联在里头,在部分情况下可以替代结构体:

rust
enum IPAdress {
    V4(i32, i32, i32, i32),
    V6(String),
}

不仅是基础类型,你可以嵌入字符串、数值、结构体,甚至另一个枚举。

match 关键字

现在想理解 Rust 的 match 关键字就简单了:

rust
fn main() {
    let coins = [Coin::Penny, Coin::Nickel, Coin::Dime, Coin::Quarter];
    for coin in coins.iter() {
        println!("{}", coin.value_in_cent())
    }
}

impl Coin {
    fn value_in_cent(&self) -> i32 {
        match self {
            Coin::Penny => 1,
            Coin::Nickel => 5,
            Coin::Dime => 10,
            Coin::Quarter => 25,
            _ => 1
        }
    }
}

我们必须穷举所有可能,否则无法编译通过,我们如果懒得处理所有情况,那就用 _ 来作为托底的值。

Released under the MIT License.