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 Oct 21, 2023
1 parent 9cdf332 commit a111571
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 @@ -787,15 +787,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 = expr_is_missing_seq(Some(quote!(self.place.#member = )), index_in_seq, field, cattrs, expecting);
let write = match field.attrs.deserialize_with() {
None => {
Expand Down Expand Up @@ -824,8 +821,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 a111571

Please sign in to comment.