我正在实施自己的serialize::{Encoder,Decoder}
。 serialize::Encoder
中有一个emit_enum_struct_variant
方法。我想知道什么样的对象会触发这个方法。
我认为它的对象看起来像这样:
struct Point {
x: int,
y: int,
}
enum MyEnum {
StructValue(Point),
}
实际按顺序触发这些方法:
emit_enum(name=MyEnum)
emit_enum_variant(v_name=StructValue,v_id=0,len=1)
emit_enum_variant_arg(a_idx=0)
emit_struct(name=Point,len=2)
emit_struct_field(f_name=x,f_idx=0)
emit_struct_field(f_name=y,f_idx=1)
答案 0 :(得分:2)
Enum struct variant是此形式的枚举变体:
enum MyEnum {
StructValue { x: int, y: int }
}
也就是说,枚举变体不是元组结构,而是常规结构。当枚举变体包含多个字段时,或者在语义上更正确时(例如,包含多个相同类型的字段的变体),这些变体偶尔会有用。