Rust-reference/expressions/enum-variant-expr

来自菜鸟教程
跳转至:导航、​搜索

Enumeration Variant expressions

枚举变体表达式

enum-variant-expr.md

commit: 1a3615102993e9f017a44b903ff2277a38a171a8
本章译文最后维护日期:2020-11-12

句法

EnumerationVariantExpression :
      EnumExprStruct
   | EnumExprTuple
   | EnumExprFieldless

EnumExprStruct :
   PathInExpression { EnumExprFields? }

EnumExprFields :
      EnumExprField (, EnumExprField)* ,?

EnumExprField :
      IDENTIFIER
   | (IDENTIFIER | TUPLE_INDEX) : Expression

EnumExprTuple :
   PathInExpression (
      ( Expression (, Expression)* ,? )?
   )

EnumExprFieldless : PathInExpression

枚举变体的构造与结构体(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 };

枚举变体表达式具有与结构体表达式相同的句法、行为和限制,除了它不支持使用 ..句法。