1
我正在實施我自己的serialize::{Encoder,Decoder}
。在serialize::Encoder
中有emit_enum_struct_variant
方法。我想知道什麼樣的對象會觸發這種方法。std:serialize中的結構變體枚舉是什麼?
我想它的對象是這樣的:
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)
對不起,這個小問題。 '''emit_tuple_struct'''呢?我試過調用'''''''''''struct'TupleStruct(uint,bool);''''''''。 – Jarod 2014-12-06 02:54:13
我剛剛檢查過,實際上''[derive(Decodable,Encodable)]'使用'emit_struct' /'read_struct'而不是'emit_tuple_struct' /'read_tuple_struct'。我不知道它爲何發生的原因,也許可以在包含'#[deriving(Encodable,Decodable)]''''''''''''的庫的git歷史記錄中找到它。 – 2014-12-06 11:54:18