An item which isn't a unit struct, a variant, nor a constant has been used as a match pattern.
Erroneous code example:
#![allow(unused)]
fn main() {
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:
#![allow(unused)]
fn main() {
struct Tortoise;
impl Tortoise {
fn turtle(&self) -> u32 { 0 }
}
match 0u32 {
x if x == Tortoise.turtle() => {} // Bound into `x` then we compare it!
_ => {}
}
}
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/error_codes/E0533.html