Rollup merge of #74751 - GuillaumeGomez:cleanup-e0730, r=jyn514
Clean up E0730 explanation r? @Dylan-DPC
This commit is contained in:
commit
7e86c8eccb
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Loading…
Reference in New Issue
Block a user