## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Error code E0533

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