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:
# 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.