假设我有一个枚举,其中每个变量都可以有自己独特的字段:
enum X {
A { pa: bool, pb: u8, pc: u32, pd: u32 },
B { pc: bool, pd: u8, pe: bool, pf: bool },
}
我不想使用#[derive(Default)]
为类型X
本身定义默认值。相反,我想将变量赋给变量,并让变量的字段设置默认值。
例如,如果选择X::A
,是否有以下等效内容,而不单独列出每个字段?
let xa = X::A { pa: bool::default(), pb: u8::default(), pc: u32::default(), pd: u32::default() };
1条答案
按热度按时间8ftvxx2r1#
你可以创建构造函数,这样你就不需要每次都写出来。
然后将它们命名为
X::a()
。你也可以创建常量,但是你需要用const函数或文字来构造常量。这是关于你可以对类似结构的枚举变量做什么的限制。它们不是很符合人体工程学,所以并非巧合的是,编写复杂变量的最常见方法是使用真实的结构。
这些允许您为每个变量的内容派生默认实现,并使构造和解构枚举变得更容易。