Change de::VariantVisitor to let deserializers know the variant kind

This allows formats like cbor that encode a unit variant as just a
string to work.

[breaking-change]
This commit is contained in:
Erick Tryzelaar
2015-04-06 20:04:01 -07:00
parent d36879f5ee
commit 1da47c0870
7 changed files with 94 additions and 24 deletions
+3 -3
View File
@@ -417,7 +417,7 @@ fn deserialize_variant(
match variant.node.kind {
ast::TupleVariantKind(ref args) if args.is_empty() => {
quote_expr!(cx, {
try!(visitor.visit_value(::serde::de::impls::UnitVisitor));
try!(visitor.visit_unit());
Ok($type_ident::$variant_ident)
})
}
@@ -482,7 +482,7 @@ fn deserialize_tuple_variant(
}
}
visitor.visit_value($visitor_expr)
visitor.visit_seq($visitor_expr)
})
}
@@ -524,7 +524,7 @@ fn deserialize_struct_variant(
}
}
visitor.visit_value($visitor_expr)
visitor.visit_map($visitor_expr)
})
}