匹配
match
模式匹配 与 C/C++ 有点类似,都用于匹配多个值。与 C/C++ 不同如下:
- match 语句最后会有返回值
- 每个分支的返回值类型必须一致
- 支持模糊匹配
- 无 break,不会出现贯穿错误
- 必须匹配所有范围,否则编译报错, 通常使用
_
替代其他值。
实例
#[derive(PartialEq)] enum EType { Ta, Tb, Tc(i32), } fn main() { let e1 = EType::Tc(10); match e1 { EType::Ta => { println!("ta"); } EType::Tb => { println!("tb"); } EType::Tc(v) => match v { 0 => println!("tc: 0"), _ => println!("tc: {v}"), }, } let e2 = EType::Tb; let rst = match e2 { EType::Ta | EType::Tb => 0, EType::Tc(v) => v, }; println!("rst: {rst}"); let cnt = 10; match cnt { 0..6 => { println!("0~5") } 6..10 => { println!("6~10") } _ => { println!("others") } } }