Rust 如何在数组中存储枚举值?

2023-11-21

以下是有效的 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,在你的例子中)。

因此,可以将值直接存储在数组中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rust 如何在数组中存储枚举值? 的相关文章

随机推荐