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! _ => {} } ```