| A union expression does not have exactly one field. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0784 |
| union Bird { |
| pigeon: u8, |
| turtledove: u16, |
| } |
| |
| let bird = Bird {}; // error |
| let bird = Bird { pigeon: 0, turtledove: 1 }; // error |
| ``` |
| |
| The key property of unions is that all fields of a union share common storage. |
| As a result, writes to one field of a union can overwrite its other fields, and |
| size of a union is determined by the size of its largest field. |
| |
| You can find more information about the union types in the [Rust reference]. |
| |
| Working example: |
| |
| ``` |
| union Bird { |
| pigeon: u8, |
| turtledove: u16, |
| } |
| |
| let bird = Bird { pigeon: 0 }; // OK |
| ``` |
| |
| [Rust reference]: https://doc.rust-lang.org/reference/items/unions.html |