Union types

A union type is a nominal, heterogeneous C-like union, denoted by the name of a union item.

A union contains the value of any one of its fields. Since the accessing the wrong field can cause unexpected or undefined behaviour, unsafe is required to read from a union field or to write to a field that doesn't implement Copy.

The memory layout of a union is undefined by default, but the #[repr(...)] attribute can be used to fix a layout.