A surprising enum size optimization in the Rust compiler
a year ago
- #Enums
- #Memory Optimization
- #Rust
- Rust中的枚举(enum)是包含一组变体的类型,例如`Foo`可以是`Int(u32)`或`Char(char)`。
- 枚举的大小通常是其最大变体的大小加上用于标识变体的标签。
- Rust会优化枚举的内存使用,例如对`Option<char>`这类枚举进行空位优化(niche optimization)。
- 嵌套枚举(`Outer`包含`Inner`)可以共享内存表示,从而减少总大小。
- 可以使用`print_memory_representation`等函数检查内存表示形式。