rust 匹配枚举时如何避免语法重复?

z3yyvxxp  于 2023-01-13  发布在  其他
关注(0)|答案(2)|浏览(131)

我有一个结构体,其中一个字段是枚举,当使用match语句时,有很多重复,感觉可以避免。
基本上我现在拥有的是

match self.foo // which is an enum, Foo {
    Foo::Bar => something,
    Foo::Bazz => something else,
    _ => you get the point

}

我试过:

match self.foo {
    Foo::{
       Bar => something,
       Bazz => something else,
    }
}

但没有达到预期的效果。是否可以不必重新键入Foo::还是我需要忍受

qnakjoqk

qnakjoqk1#

可以使用use Foo::*;语句将Foo的所有变体都纳入范围:

enum Foo {
    Bar,
    Bazz,
}

fn main() {
    let foo = Foo::Bar;
    
    use Foo::*;
    match foo {
        Bar => println!("something"),
        Bazz => println!("something else"),
    }
}
jv2fixgn

jv2fixgn2#

您可以导入枚举变量的名称以直接使用它们:

use Foo::*;
match self.foo {
    Bar => something,
    Bazz => something else,
}

这就是NoneSome在不需要Option::的情况下的工作方式。

相关问题