Enumeration Variant expressions
Syntax
EnumerationVariantExpression :
EnumExprStruct
| EnumExprTuple
| EnumExprFieldlessEnumExprStruct :
PathInExpression{
EnumExprFields?}
EnumExprFields :
EnumExprField (,
EnumExprField)\*,
?EnumExprField :
IDENTIFIER
| (IDENTIFIER | TUPLE_INDEX):
ExpressionEnumExprTuple :
PathInExpression(
( Expression (,
Expression)\*,
? )?
)
EnumExprFieldless : PathInExpression
Enumeration variants can be constructed similarly to structs, using a path to an enum variant instead of to a struct:
# #![allow(unused_variables)] #fn main() { # enum Message { # Quit, # WriteString(String), # Move { x: i32, y: i32 }, # } let q = Message::Quit; let w = Message::WriteString("Some string".to_string()); let m = Message::Move { x: 50, y: 200 }; #}
Enum variant expressions have the same syntax, behavior, and restrictions as struct
expressions, except they do not support base update with the ..
syntax.