News for hackers. Stuff that matters.
Re:Using enums to represent state in Rust by kortex on Friday September 22, 2023 @10:02AM (#37612199)
> Deleted { deleted_at: DateTime<Utc> },

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?

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).