A union type is a nominal, heterogeneous C-like union, denoted by the name of
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
The memory layout of a
union is undefined by default, but the
attribute can be used to fix a layout.