Skip to content

Commit

Permalink
Do not write skipped fields in deserialize_in_place()
Browse files Browse the repository at this point in the history
  • Loading branch information
h3ndrk committed Jul 18, 2023
1 parent 03da66c commit 2543484
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions serde_derive/src/de.rs
Original file line number Diff line number Diff line change
Expand Up @@ -799,15 +799,12 @@ fn deserialize_seq_in_place(
let expecting = cattrs.expecting().unwrap_or(&expecting);

let mut index_in_seq = 0usize;
let write_values = fields.iter().map(|field| {
let member = &field.member;
let write_values = fields
.iter()
.filter(|field| !field.attrs.skip_deserializing())
.map(|field| {
let member = &field.member;

if field.attrs.skip_deserializing() {
let default = Expr(expr_is_missing(field, cattrs));
quote! {
self.place.#member = #default;
}
} else {
let value_if_none = match field.attrs.default() {
attr::Default::Default => quote!(
self.place.#member = _serde::__private::Default::default();
Expand Down Expand Up @@ -846,8 +843,7 @@ fn deserialize_seq_in_place(
};
index_in_seq += 1;
write
}
});
});

let this_type = &params.this_type;
let (_, ty_generics, _) = params.generics.split_for_impl();
Expand Down

0 comments on commit 2543484

Please sign in to comment.