Skip to content

Commit

Permalink
Remove generation of unused components of tuple
Browse files Browse the repository at this point in the history
  • Loading branch information
Mingun committed Oct 25, 2024
1 parent 7d51480 commit c4805c4
Showing 1 changed file with 11 additions and 17 deletions.
28 changes: 11 additions & 17 deletions serde_derive/src/de.rs
Original file line number Diff line number Diff line change
Expand Up @@ -969,14 +969,9 @@ fn deserialize_struct(

let deserialized_fields: Vec<_> = fields
.iter()
.enumerate()
// Skip fields that shouldn't be deserialized or that were flattened,
// so they don't appear in the storage in their literal form
.filter(|&(_, field)| !field.attrs.skip_deserializing() && !field.attrs.flatten())
.map(|(i, field)| FieldWithAliases {
ident: field_i(i),
aliases: field.attrs.aliases(),
})
.filter(|field| !field.attrs.skip_deserializing() && !field.attrs.flatten())
.collect();

let has_flatten = has_flatten(fields);
Expand Down Expand Up @@ -1039,7 +1034,9 @@ fn deserialize_struct(
let fields_stmt = if has_flatten {
None
} else {
let field_names = deserialized_fields.iter().flat_map(|field| field.aliases);
let field_names = deserialized_fields
.iter()
.flat_map(|field| field.attrs.aliases());

Some(quote! {
#[doc(hidden)]
Expand Down Expand Up @@ -1133,12 +1130,7 @@ fn deserialize_struct_in_place(

let deserialized_fields: Vec<_> = fields
.iter()
.enumerate()
.filter(|&(_, field)| !field.attrs.skip_deserializing())
.map(|(i, field)| FieldWithAliases {
ident: field_i(i),
aliases: field.attrs.aliases(),
})
.filter(|field| !field.attrs.skip_deserializing())
.collect();

let (consts, field, field_seed) =
Expand All @@ -1153,7 +1145,9 @@ fn deserialize_struct_in_place(
let visit_map = Stmts(deserialize_map_in_place(
params, fields, cattrs, field, field_seed,
));
let field_names = deserialized_fields.iter().flat_map(|field| field.aliases);
let field_names = deserialized_fields
.iter()
.flat_map(|field| field.attrs.aliases());
let type_name = cattrs.name().deserialize_name();

let in_place_impl_generics = de_impl_generics.in_place();
Expand Down Expand Up @@ -2070,7 +2064,7 @@ fn deserialize_generated_identifier(
/// Generates enum and its `Deserialize` implementation that represents each
/// non-skipped field of the struct
fn deserialize_field_identifier(
deserialized_fields: &[FieldWithAliases],
deserialized_fields: &[&Field],
cattrs: &attr::Container,
has_flatten: bool,
) -> (TokenStream, TokenStream, TokenStream) {
Expand All @@ -2091,9 +2085,9 @@ fn deserialize_field_identifier(
)
};

// `aliases` also contains a main name
let aliases = deserialized_fields.iter().map(|field| {
let aliases = field.aliases;
// `aliases` also contains a main name
let aliases = field.attrs.aliases();
quote!(&[ #(#aliases),* ])
});
let consts = quote! {
Expand Down

0 comments on commit c4805c4

Please sign in to comment.