| A pattern attempted to extract an incorrect number of fields from a variant. | |
| Erroneous code example: | |
| ```compile_fail,E0023 | |
| 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: | |
| ``` | |
| 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: | |
| ```compile_fail,E0023 | |
| 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. |