Skip to content

Commit c483f00

Browse files
committed
Clarify struct pattern binding shorthand
The existing text was slightly confusing with the way it worded "ref and/or mut", and wasn't quite clear what it was referring to. I pulled that out into a separate sentence. This also adds a sentence to make it very clear that this is a shorthand. This is somewhat a duplicate of patterns.destructure.named-field-shorthand, but it seems fine to me to have that. This also reworks the example. The current example didn't fit this section at all, and it's not entirely clear to me what the original intention was here. Maybe that was intended for the destructuring section? Either way, I just made this example fit this rule.
1 parent 1d930e1 commit c483f00

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/patterns.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -810,7 +810,7 @@ r[patterns.struct.constraint-union]
810810
A struct pattern used to match a union must specify exactly one field (see [Pattern matching on unions]).
811811

812812
r[patterns.struct.binding-shorthand]
813-
The `ref` and/or `mut` [IDENTIFIER] syntax matches any value and binds it to a variable with the same name as the given field.
813+
The [IDENTIFIER] syntax matches any value and binds it to a variable with the same name as the given field. It is a shorthand for `fieldname: fieldname`. The `ref` and `mut` qualifiers can be included with the behavior as described in [patterns.ident.ref].
814814

815815
```rust
816816
# struct Struct {
@@ -820,7 +820,7 @@ The `ref` and/or `mut` [IDENTIFIER] syntax matches any value and binds it to a v
820820
# }
821821
# let struct_value = Struct{a: 10, b: 'X', c: false};
822822
#
823-
let Struct{a: x, b: y, c: z} = struct_value; // destructure all fields
823+
let Struct { a, b, c } = struct_value;
824824
```
825825

826826
r[patterns.struct.refutable]

0 commit comments

Comments
 (0)