summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_error_codes/src/error_codes/E0528.md
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_error_codes/src/error_codes/E0528.md')
-rw-r--r--compiler/rustc_error_codes/src/error_codes/E0528.md27
1 files changed, 27 insertions, 0 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0528.md b/compiler/rustc_error_codes/src/error_codes/E0528.md
new file mode 100644
index 000000000..54c2c4d4e
--- /dev/null
+++ b/compiler/rustc_error_codes/src/error_codes/E0528.md
@@ -0,0 +1,27 @@
+An array or slice pattern required more elements than were present in the
+matched array.
+
+Example of erroneous code:
+
+```compile_fail,E0528
+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);
+ }
+}
+```