| A binding shadowed something it shouldn't. | |
| A match arm or a variable has a name that is already used by | |
| something else, e.g. | |
| * struct name | |
| * enum variant | |
| * static | |
| * associated constant | |
| This error may also happen when an enum variant *with fields* is used | |
| in a pattern, but without its fields. | |
| ```compile_fail | |
| enum Enum { | |
| WithField(i32) | |
| } | |
| use Enum::*; | |
| match WithField(1) { | |
| WithField => {} // error: missing (_) | |
| } | |
| ``` | |
| Match bindings cannot shadow statics: | |
| ```compile_fail,E0530 | |
| static TEST: i32 = 0; | |
| let r = 123; | |
| match r { | |
| TEST => {} // error: name of a static | |
| } | |
| ``` | |
| Fixed examples: | |
| ``` | |
| static TEST: i32 = 0; | |
| let r = 123; | |
| match r { | |
| some_value => {} // ok! | |
| } | |
| ``` | |
| or | |
| ``` | |
| const TEST: i32 = 0; // const, not static | |
| let r = 123; | |
| match r { | |
| TEST => {} // const is ok! | |
| other_values => {} | |
| } | |
| ``` |