在Rust中为破坏结构的匹配臂提供默认值

ca1c2owp  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(92)

假设我有一个这样的枚举:

enum C {
   A(i64, i64),
   B(i64),
}

我想用默认值匹配它。有没有一种方法可以让我用默认值匹配多个手臂:

fn main() {
    let var = C::B(1);
    
    match var {
        C::A(v1, v2) | C::B(v1, v2 @ 0) => {
            assert_eq!((v1, v2), (1, 0))
        }
    }
}
k5hmc34c

k5hmc34c1#

你可以匹配元组(var, v2_default),而不仅仅是var:

match (var, 0) {
    (C::A(v1, v2), _) | (C::B(v1), v2) => {
        println!("{} {}", v1, v2);
    }
}

相关问题