【发布时间】:2021-06-11 09:16:35
【问题描述】:
有没有与此等价的东西:
enum ABC {
A(u32),
B(i32),
C(f64),
}
fn main() {
let abc = ABC::A(42);
match abc {
_(foo) => foo,
}
}
我问的原因是,有时我想为不同的可能类型使用枚举,但大多数情况下我需要以完全相同的方式处理枚举变体中的数据。
【问题讨论】:
-
您能否提供一个示例,说明您是如何“以完全相同的方式”处理它们的?
-
看起来您应该将类型与数据分开,即您应该将当前枚举替换为同时具有值字段和“类型”字段的结构,这将是一个没有值的枚举跨度>
-
一个例子是在哈希图中,我不能使用多种类型的值(和键)。所以我使用枚举作为值,然后通过键访问它们之后,我想要的就是使用枚举中的数据,同样的方式
-
@DenysSéguret 我不明白那会怎样,你能提供一个插图吗?
-
在新的上下文中,您可能需要一个特征并将其应用于 u32、i32、64,但这个新问题太模糊,无法以一般方式回答。