Re:Using enums to represent state in Rust
by goku12 on Friday September 22, 2023 @10:32AM
(#37612578)
Reposting: https://cheats.rs/#memory-layout
> Does the value take up the same width regardless of state?
Yes. As the other commenter mentioned, it's the size of the largest variant (same as a union in C) + a tag (almost the same as an enum in C). In some rare cases, the compiler even manages to optimize out the tag.
Re:Using enums to represent state in Rust
by sowbug on Friday September 22, 2023 @10:13AM
(#37612329)
Yes; they take up the size of the largest variant. If you're concerned about that, you can Box<> the contents, and then each variant is effectively a same-sized pointer to something on the heap (plus some bookkeeping).
What does this look like under the hood (in memory)? Does the compiler automatically generate a struct/union? Does the value take up the same width regardless of state?