mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-17 00:01:00 +00:00
Reuse type in newtype_variant_containing_unit_struct
This commit is contained in:
@@ -28,6 +28,7 @@ struct Struct {
|
|||||||
enum InternallyTagged {
|
enum InternallyTagged {
|
||||||
Unit,
|
Unit,
|
||||||
NewtypeUnit(()),
|
NewtypeUnit(()),
|
||||||
|
NewtypeUnitStruct(Unit),
|
||||||
NewtypeNewtype(Newtype),
|
NewtypeNewtype(Newtype),
|
||||||
NewtypeMap(BTreeMap<String, String>),
|
NewtypeMap(BTreeMap<String, String>),
|
||||||
NewtypeStruct(Struct),
|
NewtypeStruct(Struct),
|
||||||
@@ -169,6 +170,7 @@ fn wrong_tag() {
|
|||||||
"unknown variant `Z`, expected one of \
|
"unknown variant `Z`, expected one of \
|
||||||
`Unit`, \
|
`Unit`, \
|
||||||
`NewtypeUnit`, \
|
`NewtypeUnit`, \
|
||||||
|
`NewtypeUnitStruct`, \
|
||||||
`NewtypeNewtype`, \
|
`NewtypeNewtype`, \
|
||||||
`NewtypeMap`, \
|
`NewtypeMap`, \
|
||||||
`NewtypeStruct`, \
|
`NewtypeStruct`, \
|
||||||
@@ -638,40 +640,36 @@ fn newtype_variant_containing_externally_tagged_enum() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn newtype_variant_containing_unit_struct() {
|
fn newtype_variant_containing_unit_struct() {
|
||||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
let value = InternallyTagged::NewtypeUnitStruct(Unit);
|
||||||
#[serde(tag = "tag")]
|
|
||||||
enum Message {
|
|
||||||
Info(Unit),
|
|
||||||
}
|
|
||||||
|
|
||||||
assert_tokens(
|
assert_tokens(
|
||||||
&Message::Info(Unit),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Map { len: Some(1) },
|
Token::Map { len: Some(1) },
|
||||||
Token::Str("tag"),
|
Token::Str("tag"),
|
||||||
Token::Str("Info"),
|
Token::Str("NewtypeUnitStruct"),
|
||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
assert_de_tokens(
|
assert_de_tokens(
|
||||||
&Message::Info(Unit),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Struct {
|
Token::Struct {
|
||||||
name: "Message",
|
name: "InternallyTagged",
|
||||||
len: 1,
|
len: 1,
|
||||||
},
|
},
|
||||||
Token::Str("tag"),
|
Token::Str("tag"),
|
||||||
Token::Str("Info"),
|
Token::Str("NewtypeUnitStruct"),
|
||||||
Token::StructEnd,
|
Token::StructEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
assert_de_tokens(
|
assert_de_tokens(
|
||||||
&Message::Info(Unit),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Seq { len: Some(1) },
|
Token::Seq { len: Some(1) },
|
||||||
Token::Str("Info"),
|
Token::Str("NewtypeUnitStruct"), // tag
|
||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user