diff options
Diffstat (limited to '')
-rw-r--r-- | compiler/rustc_error_codes/src/error_codes/E0081.md | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0081.md b/compiler/rustc_error_codes/src/error_codes/E0081.md new file mode 100644 index 000000000..b834a734c --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0081.md @@ -0,0 +1,37 @@ +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. |