match是一个灵活性极高的语法。可以有效的丢掉if else屎山带来的维护麻烦,且可以用它来实现别的语言的try_catch。
    首先需要枚举(不能使用结构体,结构体的类型并不具有唯一性)
    图片.png
    接着实体化
    图片.png
    这样coin变量就是Coin::Number的实体了

    图片.png
    这里match coin的意思是匹配coin的类型
    如果是Coin::Number就返回str类型的1元
    如果是Coin::Flower就返回str类型的牡丹
    等价代码就是

    1. if coin == Number{"1元"}
    2. else if coin ==Flower{"牡丹"}

    这样是不是好看很多了呢?

    这里的完整代码是

    1. fn main(){
    2. enum Coin{
    3. Number,
    4. Flower
    5. }
    6. let coin = Coin::Number; coin: Coin
    7. let a = match coin{ a: &str
    8. Coin::Number => "1元",
    9. Coin::Flower => "牡丹"
    10. };
    11. println!("{}",a);
    12. }