【问题标题】:How do I avoid syntax repitition when matching enums?匹配枚举时如何避免语法重复?
【发布时间】:2023-01-12 12:07:16
【问题描述】:

我有一个结构,其中一个字段是一个枚举,当使用匹配语句时,有很多重复感觉是可以避免的。

基本上我现在拥有的是

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:: ,或者这只是我需要忍受的东西?

【问题讨论】:

    标签: rust enums pattern-matching match


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        • 1970-01-01
        • 2011-10-06
        • 2019-10-29
        • 1970-01-01
        • 2011-10-14
        • 1970-01-01
        相关资源
        最近更新 更多