gpt4 book ai didi

rust - 是否可以将枚举变体的所有结构成员绑定(bind)到单个变量?

转载 作者:行者123 更新时间:2023-12-03 11:33:43 25 4
gpt4 key购买 nike

假设我定义和实例化一个枚举如下:

enum MyEnum {
EmptyVariant,
TupleVariant(u8),
StructVariant {
key: u8,
value: char,
}
}

let instance = MyEnum::StructVariant{key: 8, value: 'a'};
是否可以在不解构的情况下匹配此变体?例如,不要这样做:
if let MyEnum::StructVariant{key, value} = instance {
eprintln!("key, value = {}, {}", key, value);
}
我宁愿写这样的东西:
if let MyEnum::StructVariant{VARIANT_MEMBERS} = instance {
eprintln!("key, value = {}, {}", VARIANT_MEMBERS.key, VARIANT_MEMBERS.value);
}
在这个例子中,写出结构体变体的成员是良性的,但是在变体有很多成员的情况下,它会使代码难以阅读。

最佳答案

我认为从今天开始是不可能的。
我确实看到了以下模式,它在实践中通过额外的中介类型实现了您所要求的:
而是放置 StructVariant 的所有所需成员在实际的结构类型中,并让您的枚举将该结构用作 StructVariant 的唯一字段.

struct MyVariant {
key: u8,
value: char
}

enum MyEnum {
EmptyVariant,
TupleVariant(u8),
StructVariant(MyVariant)
}

if let MyEnum::StructVariant(x) = instance {
eprintln!("key, value = {}, {}", x.key, x.value);
}
当您想传递 StructVariant 的成员时,这也很方便。周围,​​到其他功能或类型。

关于rust - 是否可以将枚举变体的所有结构成员绑定(bind)到单个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65320821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com