| An item which isn't a unit struct, a variant, nor a constant has been used as a |
| match pattern. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0533 |
| struct Tortoise; |
| |
| impl Tortoise { |
| fn turtle(&self) -> u32 { 0 } |
| } |
| |
| match 0u32 { |
| Tortoise::turtle => {} // Error! |
| _ => {} |
| } |
| if let Tortoise::turtle = 0u32 {} // Same error! |
| ``` |
| |
| If you want to match against a value returned by a method, you need to bind the |
| value first: |
| |
| ``` |
| struct Tortoise; |
| |
| impl Tortoise { |
| fn turtle(&self) -> u32 { 0 } |
| } |
| |
| match 0u32 { |
| x if x == Tortoise.turtle() => {} // Bound into `x` then we compare it! |
| _ => {} |
| } |
| ``` |