| A discriminant value is present more than once. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0081 |
| 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. |
| |
| ```compile_fail,E0081 |
| 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. |