11# Enumeration Variant expressions
22
3- Enumeration variants can be constructed similarly to structs, using a path to
4- an enum variant instead of to a struct:
3+ > ** <sup >Syntax</sup >** \
4+ > _ EnumerationVariantExpression_ :\
5+ >   ;  ;   ;  ; _ EnumExprStruct_ \
6+ >   ;  ; | _ EnumExprTuple_ \
7+ >   ;  ; | _ EnumExprFieldless_
8+ >
9+ > _ EnumExprStruct_ :\
10+ >   ;  ; [ _ PathInExpression_ ] ` { ` _ EnumExprFields_ <sup >?</sup > ` } `
11+ >
12+ > _ EnumExprFields_ :\
13+ >   ;  ;   ;  ; _ EnumExprField_ (` , ` _ EnumExprField_ )<sup >\* </sup > ` , ` <sup >?</sup >
14+ >
15+ > _ EnumExprField_ :\
16+ >   ;  ;   ;  ; [ IDENTIFIER] \
17+ >   ;  ; | ([ IDENTIFIER] | [ TUPLE_INDEX] ) ` : ` [ _ Expression_ ]
18+ >
19+ > _ EnumExprTuple_ :\
20+ >   ;  ; [ _ PathInExpression_ ] ` ( ` \
21+ >   ;  ;   ;  ; ( [ _ Expression_ ] (` , ` [ _ Expression_ ] )<sup >\* </sup > ` , ` <sup >?</sup > )<sup >?</sup >\
22+ >   ;  ; ` ) `
23+ >
24+ > _ EnumExprFieldless_ : [ _ PathInExpression_ ]
25+
26+ Enumeration variants can be constructed similarly to [ structs] , using a path to an enum
27+ variant instead of to a struct:
528
629``` rust
730# enum Message {
@@ -13,3 +36,12 @@ let q = Message::Quit;
1336let w = Message :: WriteString (" Some string" . to_string ());
1437let m = Message :: Move { x : 50 , y : 200 };
1538```
39+
40+ Enum variant expressions have the same syntax, behavior, and restrictions as [ struct
41+ expressions] [ structs ] , except they do not support base update with the ` .. ` syntax.
42+
43+ [ IDENTIFIER ] : identifiers.html
44+ [ TUPLE_INDEX ] : tokens.html#integer-literals
45+ [ _Expression_ ] : expressions.html
46+ [ _PathInExpression_ ] : paths.html#paths-in-expressions
47+ [ structs ] : expressions/struct-expr.html
0 commit comments