mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-23 01:18:02 +00:00
Respect skip_serializing in tuple structs and variants
This commit is contained in:
@@ -657,6 +657,44 @@ fn test_skip_serializing_struct() {
|
||||
);
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Serialize)]
|
||||
struct SkipSerializingTupleStruct<'a, B, C>(
|
||||
&'a i8,
|
||||
#[serde(skip_serializing)] B,
|
||||
#[serde(skip_serializing_if = "ShouldSkip::should_skip")] C,
|
||||
)
|
||||
where
|
||||
C: ShouldSkip;
|
||||
|
||||
#[test]
|
||||
fn test_skip_serializing_tuple_struct() {
|
||||
let a = 1;
|
||||
assert_ser_tokens(
|
||||
&SkipSerializingTupleStruct(&a, 2, 3),
|
||||
&[
|
||||
Token::TupleStruct {
|
||||
name: "SkipSerializingTupleStruct",
|
||||
len: 2,
|
||||
},
|
||||
Token::I8(1),
|
||||
Token::I32(3),
|
||||
Token::TupleStructEnd,
|
||||
],
|
||||
);
|
||||
|
||||
assert_ser_tokens(
|
||||
&SkipSerializingTupleStruct(&a, 2, 123),
|
||||
&[
|
||||
Token::TupleStruct {
|
||||
name: "SkipSerializingTupleStruct",
|
||||
len: 2,
|
||||
},
|
||||
Token::I8(1),
|
||||
Token::TupleStructEnd,
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||
struct SkipStruct<B> {
|
||||
a: i8,
|
||||
@@ -705,6 +743,11 @@ where
|
||||
#[serde(skip_serializing_if = "ShouldSkip::should_skip")]
|
||||
c: C,
|
||||
},
|
||||
Tuple(
|
||||
&'a i8,
|
||||
#[serde(skip_serializing)] B,
|
||||
#[serde(skip_serializing_if = "ShouldSkip::should_skip")] C,
|
||||
),
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -743,6 +786,33 @@ fn test_skip_serializing_enum() {
|
||||
Token::StructVariantEnd,
|
||||
],
|
||||
);
|
||||
|
||||
assert_ser_tokens(
|
||||
&SkipSerializingEnum::Tuple(&a, 2, 3),
|
||||
&[
|
||||
Token::TupleVariant {
|
||||
name: "SkipSerializingEnum",
|
||||
variant: "Tuple",
|
||||
len: 2,
|
||||
},
|
||||
Token::I8(1),
|
||||
Token::I32(3),
|
||||
Token::TupleVariantEnd,
|
||||
],
|
||||
);
|
||||
|
||||
assert_ser_tokens(
|
||||
&SkipSerializingEnum::Tuple(&a, 2, 123),
|
||||
&[
|
||||
Token::TupleVariant {
|
||||
name: "SkipSerializingEnum",
|
||||
variant: "Tuple",
|
||||
len: 2,
|
||||
},
|
||||
Token::I8(1),
|
||||
Token::TupleVariantEnd,
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
|
||||
Reference in New Issue
Block a user