fn main() {
println!("E:{}", std::mem::size_of::<E>());
}
enum E {
H(u32),
}
这段代码的运行结果是E:4。我为枚举结构体E再添加一个值E1,代码如下:
enum E {
H(u32),
E1(u32),
}
这次的运行结果是E:8。然后我再为枚举结构体E再多的值,代码如下:
enum E {
H(u32),
E1(u32),
E2(u32),
E3(u32),
E4(u32),
E5(u32),
E6(u32),
E7(u32),
E8(u32),
E9(u32),
E10(u32),
E11(u32),
E12(u32),
E13(u32),
E14(u32),
E15(u32),
E16(u32),
E17(u32),
E18(u32),
E19(u32),
E20(u32),
E21(u32),
E22(u32),
E23(u32),
E24(u32),
E25(u32),
E26(u32),
E27(u32),
E28(u32),
E29(u32),
E30(u32),
E31(u32),
E32(u32),
E33(u32),
E34(u32),
E35(u32),
E36(u32),
E37(u32),
E38(u32),
E39(u32),
E40(u32),
E41(u32),
E42(u32),
E43(u32),
E44(u32),
E45(u32),
E46(u32),
E47(u32),
E48(u32),
}
这次的运行结果依然是E:8。u32占4个字节,H标签占1个字节,那么第一次运行的结果应该是E:8,为什么是E:4?
1
共 2 条评论, 1 页
评论区
写评论豁然开朗
--
👇
fefit: 枚举需要保存的数据包括枚举元素包含的值、枚举值当前是哪个元素的信息数据,只有一个元素的时候,只有一种可能,直接保存这个枚举元素的值就可以了,应该是RUST编译器做的优化吧
枚举需要保存的数据包括枚举元素包含的值、枚举值当前是哪个元素的信息数据,只有一个元素的时候,只有一种可能,直接保存这个枚举元素的值就可以了,应该是RUST编译器做的优化吧