Moved the matching structs example next to the prose talking about struct matching
This commit is contained in:
parent
67d421d62d
commit
e46de5381b
22
doc/rust.md
22
doc/rust.md
@ -2174,17 +2174,6 @@ Records and structures can also be pattern-matched and their fields bound to var
|
||||
When matching fields of a record,
|
||||
the fields being matched are specified first,
|
||||
then a placeholder (`_`) represents the remaining fields.
|
||||
|
||||
A pattern that's just a variable binding,
|
||||
like `Nil` in the previous answer,
|
||||
could either refer to an enum variant that's in scope,
|
||||
or bind a new variable.
|
||||
The compiler resolves this ambiguity by forbidding variable bindings that occur in ```match``` patterns from shadowing names of variants that are in scope.
|
||||
For example, wherever ```List``` is in scope,
|
||||
a ```match``` pattern would not be able to bind ```Nil``` as a new name.
|
||||
The compiler interprets a variable pattern `x` as a binding _only_ if there is no variant named `x` in scope.
|
||||
A convention you can use to avoid conflicts is simply to name variants with upper-case letters,
|
||||
and local variables with lower-case letters.
|
||||
|
||||
~~~~
|
||||
# type options = {choose: bool, size: ~str};
|
||||
@ -2217,6 +2206,17 @@ fn main() {
|
||||
}
|
||||
~~~~
|
||||
|
||||
A pattern that's just a variable binding,
|
||||
like `Nil` in the previous answer,
|
||||
could either refer to an enum variant that's in scope,
|
||||
or bind a new variable.
|
||||
The compiler resolves this ambiguity by forbidding variable bindings that occur in ```match``` patterns from shadowing names of variants that are in scope.
|
||||
For example, wherever ```List``` is in scope,
|
||||
a ```match``` pattern would not be able to bind ```Nil``` as a new name.
|
||||
The compiler interprets a variable pattern `x` as a binding _only_ if there is no variant named `x` in scope.
|
||||
A convention you can use to avoid conflicts is simply to name variants with upper-case letters,
|
||||
and local variables with lower-case letters.
|
||||
|
||||
Multiple match patterns may be joined with the `|` operator. A
|
||||
range of values may be specified with `..`. For example:
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user