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 E1 {
    DblVal1(f64),
}

enum E2 {
    DblVal1(f64),
    DblVal2(f64),
    DblVal3(f64),
    DblVal4(f64),
}

fn main() {
    println!("Size is {}", std::mem::size_of::<E1>());
    println!("Size is {}", std::mem::size_of::<E2>());
}

```

Why does `E1` takes up 8 bytes as expected, but `E2` takes up 16 bytes?