mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-13 17:11:02 +00:00
Add a combined #serde[(skip)] field attribute
This commit is contained in:
@@ -719,6 +719,12 @@ impl Field {
|
|||||||
skip_deserializing.set_true();
|
skip_deserializing.set_true();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parse `#[serde(skip)]`
|
||||||
|
MetaItem(Word(ref name)) if name == "skip" => {
|
||||||
|
skip_serializing.set_true();
|
||||||
|
skip_deserializing.set_true();
|
||||||
|
},
|
||||||
|
|
||||||
// Parse `#[serde(skip_serializing_if = "...")]`
|
// Parse `#[serde(skip_serializing_if = "...")]`
|
||||||
MetaItem(NameValue(ref name, ref lit)) if name == "skip_serializing_if" => {
|
MetaItem(NameValue(ref name, ref lit)) if name == "skip_serializing_if" => {
|
||||||
if let Ok(path) = parse_lit_into_path(cx, name.as_ref(), lit) {
|
if let Ok(path) = parse_lit_into_path(cx, name.as_ref(), lit) {
|
||||||
|
|||||||
@@ -580,6 +580,41 @@ fn test_skip_serializing_struct() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Serialize, Deserialize)]
|
||||||
|
struct SkipStruct<B>
|
||||||
|
{
|
||||||
|
a: i8,
|
||||||
|
#[serde(skip)]
|
||||||
|
b: B,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_skip_struct() {
|
||||||
|
assert_ser_tokens(
|
||||||
|
&SkipStruct { a: 1, b: 2 },
|
||||||
|
&[
|
||||||
|
Token::Struct { name: "SkipStruct", len: 1 },
|
||||||
|
|
||||||
|
Token::Str("a"),
|
||||||
|
Token::I8(1),
|
||||||
|
|
||||||
|
Token::StructEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_de_tokens(
|
||||||
|
&SkipStruct { a: 1, b: 0 },
|
||||||
|
&[
|
||||||
|
Token::Struct { name: "SkipStruct", len: 1 },
|
||||||
|
|
||||||
|
Token::Str("a"),
|
||||||
|
Token::I8(1),
|
||||||
|
|
||||||
|
Token::StructEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Serialize)]
|
#[derive(Debug, PartialEq, Serialize)]
|
||||||
enum SkipSerializingEnum<'a, B, C>
|
enum SkipSerializingEnum<'a, B, C>
|
||||||
where
|
where
|
||||||
|
|||||||
Reference in New Issue
Block a user