mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-17 05:25:37 +03:00
Clean up E0026
This commit is contained in:
@@ -1,51 +1,34 @@
|
||||
This error indicates that a struct pattern attempted to extract a non-existent
|
||||
field from a struct. Struct fields are identified by the name used before the
|
||||
colon `:` so struct patterns should resemble the declaration of the struct type
|
||||
being matched.
|
||||
A struct pattern attempted to extract a non-existent field from a struct.
|
||||
|
||||
```
|
||||
// Correct matching.
|
||||
struct Thing {
|
||||
x: u32,
|
||||
y: u32
|
||||
}
|
||||
|
||||
let thing = Thing { x: 1, y: 2 };
|
||||
|
||||
match thing {
|
||||
Thing { x: xfield, y: yfield } => {}
|
||||
}
|
||||
```
|
||||
|
||||
If you are using shorthand field patterns but want to refer to the struct field
|
||||
by a different name, you should rename it explicitly.
|
||||
|
||||
Change this:
|
||||
Erroneous code example:
|
||||
|
||||
```compile_fail,E0026
|
||||
struct Thing {
|
||||
x: u32,
|
||||
y: u32
|
||||
y: u32,
|
||||
}
|
||||
|
||||
let thing = Thing { x: 0, y: 0 };
|
||||
|
||||
match thing {
|
||||
Thing { x, z } => {}
|
||||
Thing { x, z } => {} // error: `Thing::z` field doesn't exist
|
||||
}
|
||||
```
|
||||
|
||||
To this:
|
||||
If you are using shorthand field patterns but want to refer to the struct field
|
||||
by a different name, you should rename it explicitly. Struct fields are
|
||||
identified by the name used before the colon `:` so struct patterns should
|
||||
resemble the declaration of the struct type being matched.
|
||||
|
||||
```
|
||||
struct Thing {
|
||||
x: u32,
|
||||
y: u32
|
||||
y: u32,
|
||||
}
|
||||
|
||||
let thing = Thing { x: 0, y: 0 };
|
||||
|
||||
match thing {
|
||||
Thing { x, y: z } => {}
|
||||
Thing { x, y: z } => {} // we renamed `y` to `z`
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user