mirror of https://github.com/rust-lang/reference
Say that struct patterns can match union values
This commit is contained in:
parent
c6049baeaf
commit
08e5cd4e3c
|
@ -597,8 +597,8 @@ Reference patterns are always irrefutable.
|
|||
[_OuterAttribute_]: attributes.md
|
||||
[TUPLE_INDEX]: tokens.md#tuple-index
|
||||
|
||||
Struct patterns match struct and enum values that match all criteria defined by its subpatterns.
|
||||
They are also used to [destructure](#destructuring) a struct or enum value.
|
||||
Struct patterns match struct, enum, and union values that match all criteria defined by its subpatterns.
|
||||
They are also used to [destructure](#destructuring) a struct, enum, or union value.
|
||||
|
||||
On a struct pattern, the fields are referenced by name, index (in the case of tuple structs) or ignored by use of `..`:
|
||||
|
||||
|
@ -642,7 +642,7 @@ match m {
|
|||
}
|
||||
```
|
||||
|
||||
If `..` is not used, it is required to match all fields:
|
||||
If `..` is not used, a struct pattern used to match a struct is required to specify all fields:
|
||||
|
||||
```rust
|
||||
# struct Struct {
|
||||
|
@ -661,6 +661,8 @@ match struct_value {
|
|||
}
|
||||
```
|
||||
|
||||
A struct pattern used to match a union must specify exactly one field (see [Pattern matching on unions]).
|
||||
|
||||
The `ref` and/or `mut` _IDENTIFIER_ syntax matches any value and binds it to a variable with the same name as the given field.
|
||||
|
||||
```rust
|
||||
|
@ -867,6 +869,7 @@ For example, `x @ A(..) | B(..)` will result in an error that `x` is not bound i
|
|||
[literal expression]: expressions/literal-expr.md
|
||||
[negating]: expressions/operator-expr.md#negation-operators
|
||||
[path]: expressions/path-expr.md
|
||||
[pattern matching on unions]: items/unions.md#pattern-matching-on-unions
|
||||
[range expressions]: expressions/range-expr.md
|
||||
[structs]: items/structs.md
|
||||
[tuples]: types/tuple.md
|
||||
|
|
Loading…
Reference in New Issue