Rust errors / Everything else
Rust compiler error · checked with rustc 1.99.0
Rust error E0081: discriminant value `3` assigned more than once
What it meansA discriminant value is present more than once.
What rustc prints
error[E0081]: discriminant value `3` assigned more than once
--> main.rs:1:1
|
1 | enum Enum {
| ^^^^^^^^^
2 | P = 3,
| - `3` assigned here
3 | X = 3, // error!
| - `3` assigned hereReal 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 discriminant value is present more than once.
Erroneous code example:
enum Enum {
P = 3,
X = 3, // error!
Y = 5,
}
Enum discriminants are used to differentiate enum variants stored in memory. This error indicates that the same value was used for two or more variants, making it impossible to distinguish them.
enum Enum {
P,
X = 3, // ok!
Y = 5,
}
Note that variants without a manually specified discriminant are numbered from top to bottom starting from 0, so clashes can occur with seemingly unrelated variants.
enum Bad {
X,
Y = 0, // error!
}
Here X will have already been specified the discriminant 0 by the time Y is encountered, so a conflict occurs.
From rustc --explain E0081 (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
- E0067invalid left-hand side of assignment
- E0070invalid left-hand side of assignment
- E0133call to unsafe function `f` is unsafe and requires unsafe function or block
- E0152found duplicate lang item `owned_box`
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?