提问人:Snails 提问时间:1/12/2023 更新时间:1/12/2023 访问量:49
如何避免匹配枚举时出现语法重复?
How do I avoid syntax repitition when matching enums?
问:
我有一个结构,其中一个字段是枚举,当使用 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::,或者这只是我需要忍受的东西?
答:
2赞
EvilTak
1/12/2023
#1
您可以使用该语句将 of 的所有变体纳入作用域:use Foo::*;
Foo
enum Foo {
Bar,
Bazz,
}
fn main() {
let foo = Foo::Bar;
use Foo::*;
match foo {
Bar => println!("something"),
Bazz => println!("something else"),
}
}
1赞
kmdreko
1/12/2023
#2
您可以导入枚举变体的名称以直接使用它们:
use Foo::*;
match self.foo {
Bar => something,
Bazz => something else,
}
这就是无需在他们面前工作的方式和工作方式。None
Some
Option::
评论
0赞
Kevin Anderson
1/12/2023
您能否将导入范围限制在语句中,或者如果要这样做,则需要用新的范围将其全部包围?match
0赞
kmdreko
1/12/2023
@KevinAnderson 只能在周围的范围内导入。
评论