mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-22 22:58:02 +00:00
Solved #1105.
When a field should be skipped during deserialization, it will not use its own Default implementation when the container structure has `#[serde(default)]` set.
This commit is contained in:
@@ -80,6 +80,20 @@ struct StructSkipAll {
|
||||
#[serde(skip_deserializing)] a: i32,
|
||||
}
|
||||
|
||||
#[derive(PartialEq, Debug, Deserialize)]
|
||||
#[serde(default)]
|
||||
struct StructSkipDefault {
|
||||
#[serde(skip_deserializing)] a: i32,
|
||||
}
|
||||
|
||||
impl Default for StructSkipDefault {
|
||||
fn default() -> Self {
|
||||
StructSkipDefault {
|
||||
a: 16,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(PartialEq, Debug, Deserialize)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
struct StructSkipAllDenyUnknown {
|
||||
@@ -600,6 +614,12 @@ declare_tests! {
|
||||
Token::StructEnd,
|
||||
],
|
||||
}
|
||||
test_struct_skip_default {
|
||||
StructSkipDefault { a: 16 } => &[
|
||||
Token::Struct { name: "StructSkipDefault", len: 0 },
|
||||
Token::StructEnd,
|
||||
],
|
||||
}
|
||||
test_struct_skip_all_deny_unknown {
|
||||
StructSkipAllDenyUnknown { a: 0 } => &[
|
||||
Token::Struct { name: "StructSkipAllDenyUnknown", len: 0 },
|
||||
|
||||
Reference in New Issue
Block a user