My understanding is that enum is like union in C and the system will allocate the largest of the data types in the enum.
enum
union
enum E1 {
In Rust, unlike in C, enums are tagged unions. That is, the enum knows which value it holds. So 8 bytes wouldn't be enough because there would be no room for the tag.