E0023 - Error codes index
Description: Book listing all Rust error codes

## 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 E0023

A pattern attempted to extract an incorrect number of fields from a variant.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    enum Fruit {
        Apple(String, String),
        Pear(u32),
    }

    let x = Fruit::Apple(String::new(), String::new());

    match x {
        Fruit::Apple(a) => {}, // error!
        _ => {}
    }
    }

A pattern used to match against an enum variant must provide a sub-pattern for each field of the enum variant.

Here the `Apple` variant has two fields, and should be matched against like so:

    #![allow(unused)]
    fn main() {
    enum Fruit {
        Apple(String, String),
        Pear(u32),
    }

    let x = Fruit::Apple(String::new(), String::new());

    // Correct.
    match x {
        Fruit::Apple(a, b) => {},
        _ => {}
    }
    }

Matching with the wrong number of fields has no sensible interpretation:

    #![allow(unused)]
    fn main() {
    enum Fruit {
        Apple(String, String),
        Pear(u32),
    }

    let x = Fruit::Apple(String::new(), String::new());

    // Incorrect.
    match x {
        Fruit::Apple(a) => {},
        Fruit::Apple(a, b, c) => {},
    }
    }

Check how many fields the enum was declared with and ensure that your pattern uses the same number.