Rust errors / Patterns and matching
Rust compiler error · checked with rustc 1.99.0
Rust error E0528: pattern requires at least 3 elements but array has 2
What it meansAn array or slice pattern required more elements than were present in the matched array.
What rustc prints
error[E0528]: pattern requires at least 3 elements but array has 2
--> main.rs:5:6
|
5 | &[a, b, c, rest @ ..] => { // error: pattern requires at least 3
| ^^^^^^^^^^^^^^^^^^^^ pattern cannot match array of 2 elementsReal output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
An array or slice pattern required more elements than were present in the matched array.
Example of erroneous code:
let r = &[1, 2];
match r {
&[a, b, c, rest @ ..] => { // error: pattern requires at least 3
// elements but array has 2
println!("a={}, b={}, c={} rest={:?}", a, b, c, rest);
}
}
Ensure that the matched array has at least as many elements as the pattern requires. You can match an arbitrary number of remaining elements with ..:
let r = &[1, 2, 3, 4, 5];
match r {
&[a, b, c, rest @ ..] => { // ok!
// prints `a=1, b=2, c=3 rest=[4, 5]`
println!("a={}, b={}, c={} rest={:?}", a, b, c, rest);
}
}From rustc --explain E0528 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
Up next
Often hit nextE0004: non-exhaustive patternsA related error from the same family.Read it next →Did this answer your question?