Rust errors / Everything else
Rust compiler error · checked with rustc 1.99.0
Rust error E0784: union expressions should have exactly one field
What it meansA union expression does not have exactly one field.
What rustc prints
error[E0784]: union expressions should have exactly one field
--> main.rs:8:12
|
8 | let bird = Bird {}; // error
| ^^^^Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
A union expression does not have exactly one field.
Erroneous code example:
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 }; // OKFrom rustc --explain E0784 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0061this function takes N arguments but M were supplied
- E0412cannot find type in this scope
- E0515cannot return reference to local variable
- E0728await is only allowed inside async functions and blocks
- E0768no valid digits found for number
- E0781the `"cmse-nonsecure-call"` ABI is only allowed on function pointers
- E0786A metadata file was invalid
- E0787naked functions must contain a single `naked_asm!` invocation
Up next
Often hit nextE0061: this function takes N arguments but M were suppliedA related error from the same family.Read it next →Did this answer your question?