Support deserializing flattened untagged enum

This commit is contained in:
David Tolnay
2018-05-10 08:33:47 -07:00
parent f9c6f0ab62
commit 368961e961
4 changed files with 91 additions and 33 deletions
+33
View File
@@ -2062,3 +2062,36 @@ fn test_untagged_enum_containing_flatten() {
],
);
}
#[test]
fn test_flatten_untagged_enum() {
#[derive(Serialize, Deserialize, PartialEq, Debug)]
struct Outer {
#[serde(flatten)]
inner: Inner,
}
#[derive(Serialize, Deserialize, PartialEq, Debug)]
#[serde(untagged)]
enum Inner {
Variant {
a: i32,
},
}
let data = Outer {
inner: Inner::Variant {
a: 0,
}
};
assert_tokens(
&data,
&[
Token::Map { len: None },
Token::Str("a"),
Token::I32(0),
Token::MapEnd,
],
);
}