Rollup merge of #74751 - GuillaumeGomez:cleanup-e0730, r=jyn514

Clean up E0730 explanation

r? @Dylan-DPC
This commit is contained in:
Manish Goregaokar 2020-07-30 13:04:23 -07:00 committed by GitHub
commit 7e86c8eccb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,6 @@
An array without a fixed length was pattern-matched. An array without a fixed length was pattern-matched.
Example of erroneous code: Erroneous code example:
```compile_fail,E0730 ```compile_fail,E0730
#![feature(const_generics)] #![feature(const_generics)]
@ -14,14 +14,28 @@ fn is_123<const N: usize>(x: [u32; N]) -> bool {
} }
``` ```
Ensure that the pattern is consistent with the size of the matched To fix this error, you have two solutions:
array. Additional elements can be matched with `..`: 1. Use an array with a fixed length.
2. Use a slice.
Example with an array with a fixed length:
``` ```
let r = &[1, 2, 3, 4]; fn is_123(x: [u32; 3]) -> bool { // We use an array with a fixed size
match r { match x {
&[a, b, ..] => { // ok! [1, 2, ..] => true, // ok!
println!("a={}, b={}", a, b); _ => false
}
}
```
Example with a slice:
```
fn is_123(x: &[u32]) -> bool { // We use a slice
match x {
[1, 2, ..] => true, // ok!
_ => false
} }
} }
``` ```