以下是有效的 Rust:
enum Foo {
One(i32, i32, i32),
Two { x: i32, y: i32 },
}
fn main() {
let x: [Foo; 2] = [Foo::One(1, 2, 3), Foo::Two { x: 1, y: 2 }];
}
Rust 如何存储它?第一个元素是 12 个字节,而第二个元素是 8 个字节(我猜在开头加上一个标记字节)。它只存储对数组中元素的引用吗?
最佳答案
枚举的所有变体使用相同数量的内存(对于您的 Foo
类型,至少在我的机器上是 16 字节)。枚举值的大小由其最大变体(在您的示例中为 One
)决定。
因此,值可以直接存储在数组中。
关于memory - Rust 如何在数组中存储枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40365336/