From c78f7d2e30703759d39fc1cdfa5beb1245ee4fa7 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 25 Sep 2025 09:24:18 -0700 Subject: [PATCH 01/10] Rename Parameters::generics -> generics_with_de_lifetime --- serde_derive/src/de.rs | 7 ++++--- serde_derive/src/de/enum_adjacently.rs | 3 ++- serde_derive/src/de/enum_externally.rs | 3 ++- serde_derive/src/de/identifier.rs | 3 ++- serde_derive/src/de/struct_.rs | 8 +++++--- serde_derive/src/de/tuple.rs | 6 ++++-- serde_derive/src/de/unit.rs | 3 ++- 7 files changed, 21 insertions(+), 12 deletions(-) diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index 9e4e6804..c10083d6 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -35,7 +35,7 @@ pub fn expand_derive_deserialize(input: &mut syn::DeriveInput) -> syn::Result ( DeImplGenerics, @@ -664,7 +664,8 @@ fn wrap_deserialize_with( deserialize_with: &syn::ExprPath, ) -> (TokenStream, TokenStream) { let this_type = ¶ms.this_type; - let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = params.generics(); + let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = + params.generics_with_de_lifetime(); let delife = params.borrowed.de_lifetime(); let deserializer_var = quote!(__deserializer); diff --git a/serde_derive/src/de/enum_adjacently.rs b/serde_derive/src/de/enum_adjacently.rs index 59239351..1ad038a2 100644 --- a/serde_derive/src/de/enum_adjacently.rs +++ b/serde_derive/src/de/enum_adjacently.rs @@ -25,7 +25,8 @@ pub(super) fn generate_body( ) -> Fragment { let this_type = ¶ms.this_type; let this_value = ¶ms.this_value; - let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = params.generics(); + let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = + params.generics_with_de_lifetime(); let delife = params.borrowed.de_lifetime(); let (variants_stmt, variant_visitor) = enum_::prepare_enum_variant_enum(variants); diff --git a/serde_derive/src/de/enum_externally.rs b/serde_derive/src/de/enum_externally.rs index 75f329ec..d4c87912 100644 --- a/serde_derive/src/de/enum_externally.rs +++ b/serde_derive/src/de/enum_externally.rs @@ -26,7 +26,8 @@ pub(super) fn generate_body( cattrs: &attr::Container, ) -> Fragment { let this_type = ¶ms.this_type; - let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = params.generics(); + let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = + params.generics_with_de_lifetime(); let delife = params.borrowed.de_lifetime(); let type_name = cattrs.name().deserialize_name(); diff --git a/serde_derive/src/de/identifier.rs b/serde_derive/src/de/identifier.rs index d90903bf..18a51fe7 100644 --- a/serde_derive/src/de/identifier.rs +++ b/serde_derive/src/de/identifier.rs @@ -84,7 +84,8 @@ pub(super) fn generate_body( Some(fields) }; - let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = params.generics(); + let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = + params.generics_with_de_lifetime(); let delife = params.borrowed.de_lifetime(); let visitor_impl = Stmts(deserialize_identifier( &this_value, diff --git a/serde_derive/src/de/struct_.rs b/serde_derive/src/de/struct_.rs index 09e13d80..b22a099c 100644 --- a/serde_derive/src/de/struct_.rs +++ b/serde_derive/src/de/struct_.rs @@ -22,7 +22,8 @@ pub(super) fn generate_body( ) -> Fragment { let this_type = ¶ms.this_type; let this_value = ¶ms.this_value; - let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = params.generics(); + let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = + params.generics_with_de_lifetime(); let delife = params.borrowed.de_lifetime(); // If there are getters (implying private fields), construct the local type @@ -431,7 +432,8 @@ pub(super) fn generate_body_in_place( } let this_type = ¶ms.this_type; - let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = params.generics(); + let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = + params.generics_with_de_lifetime(); let delife = params.borrowed.de_lifetime(); let expecting = format!("struct {}", params.type_name()); @@ -633,7 +635,7 @@ fn deserialize_map_in_place( }); let this_type = ¶ms.this_type; - let (_, _, ty_generics, _) = params.generics(); + let (_, _, ty_generics, _) = params.generics_with_de_lifetime(); let let_default = match cattrs.default() { attr::Default::Default => Some(quote!( diff --git a/serde_derive/src/de/tuple.rs b/serde_derive/src/de/tuple.rs index 7b96ae02..9db0b373 100644 --- a/serde_derive/src/de/tuple.rs +++ b/serde_derive/src/de/tuple.rs @@ -28,7 +28,8 @@ pub(super) fn generate_body( let this_type = ¶ms.this_type; let this_value = ¶ms.this_value; - let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = params.generics(); + let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = + params.generics_with_de_lifetime(); let delife = params.borrowed.de_lifetime(); // If there are getters (implying private fields), construct the local type @@ -198,7 +199,8 @@ pub(super) fn generate_body_in_place( .count(); let this_type = ¶ms.this_type; - let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = params.generics(); + let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = + params.generics_with_de_lifetime(); let delife = params.borrowed.de_lifetime(); let expecting = format!("tuple struct {}", params.type_name()); diff --git a/serde_derive/src/de/unit.rs b/serde_derive/src/de/unit.rs index 34f90808..1eef24c4 100644 --- a/serde_derive/src/de/unit.rs +++ b/serde_derive/src/de/unit.rs @@ -9,7 +9,8 @@ pub(super) fn generate_body(params: &Parameters, cattrs: &attr::Container) -> Fr let this_type = ¶ms.this_type; let this_value = ¶ms.this_value; let type_name = cattrs.name().deserialize_name(); - let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = params.generics(); + let (de_impl_generics, de_ty_generics, ty_generics, where_clause) = + params.generics_with_de_lifetime(); let delife = params.borrowed.de_lifetime(); let expecting = format!("unit struct {}", params.type_name()); From e219a0d4b7f33285f09eec738d961abfc5e58d9f Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 25 Sep 2025 09:26:00 -0700 Subject: [PATCH 02/10] Replace unnecessary use of generics_with_de_lifetime --- serde_derive/src/de/struct_.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serde_derive/src/de/struct_.rs b/serde_derive/src/de/struct_.rs index b22a099c..a08d8acd 100644 --- a/serde_derive/src/de/struct_.rs +++ b/serde_derive/src/de/struct_.rs @@ -635,7 +635,7 @@ fn deserialize_map_in_place( }); let this_type = ¶ms.this_type; - let (_, _, ty_generics, _) = params.generics_with_de_lifetime(); + let (_, ty_generics, _) = params.generics.split_for_impl(); let let_default = match cattrs.default() { attr::Default::Default => Some(quote!( From dec153b8fac72318bb2f472e80e3afc5a29384f7 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 25 Sep 2025 09:40:24 -0700 Subject: [PATCH 03/10] Adjust comments --- serde_derive/src/de.rs | 6 +++--- serde_derive/src/de/enum_adjacently.rs | 2 +- serde_derive/src/de/enum_externally.rs | 2 +- serde_derive/src/de/enum_internally.rs | 2 +- serde_derive/src/de/enum_untagged.rs | 2 +- serde_derive/src/de/identifier.rs | 3 ++- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index c10083d6..fc98fdb9 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -168,9 +168,9 @@ impl Parameters { self.this_type.segments.last().unwrap().ident.to_string() } - /// Split a deserialized type's generics into the pieces required for impl'ing - /// a `Deserialize` trait for that type. Additionally appends the `'de` lifetime - /// to list of impl generics. + /// Split the data structure's generics into the pieces to use for its + /// `Deserialize` impl, augmented with an additional `'de` lifetime for use + /// as the `Deserialize` trait's lifetime. fn generics_with_de_lifetime( &self, ) -> ( diff --git a/serde_derive/src/de/enum_adjacently.rs b/serde_derive/src/de/enum_adjacently.rs index 1ad038a2..7b07c188 100644 --- a/serde_derive/src/de/enum_adjacently.rs +++ b/serde_derive/src/de/enum_adjacently.rs @@ -1,4 +1,4 @@ -//! Generator of the deserialization code for the adjacently tagged enums: +//! Deserialization for adjacently tagged enums: //! //! ```ignore //! #[serde(tag = "...", content = "...")] diff --git a/serde_derive/src/de/enum_externally.rs b/serde_derive/src/de/enum_externally.rs index d4c87912..ec79b97b 100644 --- a/serde_derive/src/de/enum_externally.rs +++ b/serde_derive/src/de/enum_externally.rs @@ -1,4 +1,4 @@ -//! Generator of the deserialization code for the externally tagged enums: +//! Deserialization for externally tagged enums: //! //! ```ignore //! enum Enum {} diff --git a/serde_derive/src/de/enum_internally.rs b/serde_derive/src/de/enum_internally.rs index e3e85f52..8566080a 100644 --- a/serde_derive/src/de/enum_internally.rs +++ b/serde_derive/src/de/enum_internally.rs @@ -1,4 +1,4 @@ -//! Generator of the deserialization code for the internally tagged enums: +//! Deserialization for internally tagged enums: //! //! ```ignore //! #[serde(tag = "...")] diff --git a/serde_derive/src/de/enum_untagged.rs b/serde_derive/src/de/enum_untagged.rs index d431e537..b65e045c 100644 --- a/serde_derive/src/de/enum_untagged.rs +++ b/serde_derive/src/de/enum_untagged.rs @@ -1,4 +1,4 @@ -//! Generator of the deserialization code for the untagged enums: +//! Deserialization for untagged enums: //! //! ```ignore //! #[serde(untagged)] diff --git a/serde_derive/src/de/identifier.rs b/serde_derive/src/de/identifier.rs index 18a51fe7..6facd02d 100644 --- a/serde_derive/src/de/identifier.rs +++ b/serde_derive/src/de/identifier.rs @@ -1,4 +1,5 @@ -//! Contains generators of enums that represents identifiers of fields in structs or variants in enums. +//! Deserialization of struct field identifiers and enum variant identifiers by +//! way of a Rust enum. use crate::de::{FieldWithAliases, Parameters}; use crate::fragment::{Fragment, Stmts}; From ad2b064b0abe3e1c71a755f809eba305e2bc8757 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 25 Sep 2025 09:40:40 -0700 Subject: [PATCH 04/10] Adjust variable names --- serde_derive/src/de/enum_.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/serde_derive/src/de/enum_.rs b/serde_derive/src/de/enum_.rs index 15a1e541..6bcea1ca 100644 --- a/serde_derive/src/de/enum_.rs +++ b/serde_derive/src/de/enum_.rs @@ -25,12 +25,12 @@ pub(super) fn generate_body( // Ignore any error associated with non-untagged deserialization so that we // can fall through to the untagged variants. This may be infallible so we // need to provide the error type. - let tagged_frag = quote! { + let first_attempt = quote! { if let _serde::#private::Result::<_, __D::Error>::Ok(__ok) = (|| #tagged_frag)() { return _serde::#private::Ok(__ok); } }; - enum_untagged::generate_body(params, untagged, cattrs, Some(tagged_frag)) + enum_untagged::generate_body(params, untagged, cattrs, Some(first_attempt)) } None => deserialize_homogeneous_enum(params, variants, cattrs), } From 20fc31c78afb810e5c07aca18874b627ecbeb352 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 25 Sep 2025 09:33:38 -0700 Subject: [PATCH 05/10] Rename identifier::generate_body -> deserialize_custom --- serde_derive/src/de.rs | 2 +- serde_derive/src/de/identifier.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index fc98fdb9..981088af 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -323,7 +323,7 @@ fn deserialize_body(cont: &Container, params: &Parameters) -> Fragment { } } else { match &cont.data { - Data::Enum(variants) => identifier::generate_body(params, variants, &cont.attrs), + Data::Enum(variants) => identifier::deserialize_custom(params, variants, &cont.attrs), Data::Struct(_, _) => unreachable!("checked in serde_derive_internals"), } } diff --git a/serde_derive/src/de/identifier.rs b/serde_derive/src/de/identifier.rs index 6facd02d..fd3be9d7 100644 --- a/serde_derive/src/de/identifier.rs +++ b/serde_derive/src/de/identifier.rs @@ -11,7 +11,7 @@ use quote::{quote, ToTokens}; // Generates `Deserialize::deserialize` body for an enum with // `serde(field_identifier)` or `serde(variant_identifier)` attribute. -pub(super) fn generate_body( +pub(super) fn deserialize_custom( params: &Parameters, variants: &[Variant], cattrs: &attr::Container, From a437ff6bf7357c1ae33b6c37f9608edc1c77734f Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 25 Sep 2025 09:34:25 -0700 Subject: [PATCH 06/10] Rename identifier::generate_identifier -> deserialize_generated --- serde_derive/src/de/enum_.rs | 2 +- serde_derive/src/de/identifier.rs | 2 +- serde_derive/src/de/struct_.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/serde_derive/src/de/enum_.rs b/serde_derive/src/de/enum_.rs index 6bcea1ca..39ffc359 100644 --- a/serde_derive/src/de/enum_.rs +++ b/serde_derive/src/de/enum_.rs @@ -84,7 +84,7 @@ pub fn prepare_enum_variant_enum(variants: &[Variant]) -> (TokenStream, Stmts) { }) .collect(); - let variant_visitor = Stmts(identifier::generate_identifier( + let variant_visitor = Stmts(identifier::deserialize_generated( &deserialized_variants, false, // variant identifiers do not depend on the presence of flatten fields true, diff --git a/serde_derive/src/de/identifier.rs b/serde_derive/src/de/identifier.rs index fd3be9d7..8e67b963 100644 --- a/serde_derive/src/de/identifier.rs +++ b/serde_derive/src/de/identifier.rs @@ -122,7 +122,7 @@ pub(super) fn deserialize_custom( } } -pub(super) fn generate_identifier( +pub(super) fn deserialize_generated( deserialized_fields: &[FieldWithAliases], has_flatten: bool, is_variant: bool, diff --git a/serde_derive/src/de/struct_.rs b/serde_derive/src/de/struct_.rs index a08d8acd..f5a77ecf 100644 --- a/serde_derive/src/de/struct_.rs +++ b/serde_derive/src/de/struct_.rs @@ -687,7 +687,7 @@ fn deserialize_field_identifier( (Some(ignore_variant), Some(fallthrough)) }; - Stmts(identifier::generate_identifier( + Stmts(identifier::deserialize_generated( deserialized_fields, has_flatten, false, From b395215875dc822773ea037d36ef5ddb85e9813e Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 25 Sep 2025 09:27:43 -0700 Subject: [PATCH 07/10] Rename all other generate_body -> deserialize --- serde_derive/src/de.rs | 8 ++++---- serde_derive/src/de/enum_.rs | 12 ++++++------ serde_derive/src/de/enum_adjacently.rs | 2 +- serde_derive/src/de/enum_externally.rs | 6 +++--- serde_derive/src/de/enum_internally.rs | 4 ++-- serde_derive/src/de/enum_untagged.rs | 6 +++--- serde_derive/src/de/struct_.rs | 2 +- serde_derive/src/de/tuple.rs | 2 +- serde_derive/src/de/unit.rs | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index 981088af..6df7b238 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -312,14 +312,14 @@ fn deserialize_body(cont: &Container, params: &Parameters) -> Fragment { deserialize_try_from(type_try_from) } else if let attr::Identifier::No = cont.attrs.identifier() { match &cont.data { - Data::Enum(variants) => enum_::generate_body(params, variants, &cont.attrs), + Data::Enum(variants) => enum_::deserialize(params, variants, &cont.attrs), Data::Struct(Style::Struct, fields) => { - struct_::generate_body(params, fields, &cont.attrs, StructForm::Struct) + struct_::deserialize(params, fields, &cont.attrs, StructForm::Struct) } Data::Struct(Style::Tuple, fields) | Data::Struct(Style::Newtype, fields) => { - tuple::generate_body(params, fields, &cont.attrs, TupleForm::Tuple) + tuple::deserialize(params, fields, &cont.attrs, TupleForm::Tuple) } - Data::Struct(Style::Unit, _) => unit::generate_body(params, &cont.attrs), + Data::Struct(Style::Unit, _) => unit::deserialize(params, &cont.attrs), } } else { match &cont.data { diff --git a/serde_derive/src/de/enum_.rs b/serde_derive/src/de/enum_.rs index 39ffc359..6f5094ff 100644 --- a/serde_derive/src/de/enum_.rs +++ b/serde_derive/src/de/enum_.rs @@ -12,7 +12,7 @@ use proc_macro2::TokenStream; use quote::quote; /// Generates `Deserialize::deserialize` body for an `enum Enum {...}` -pub(super) fn generate_body( +pub(super) fn deserialize( params: &Parameters, variants: &[Variant], cattrs: &attr::Container, @@ -30,7 +30,7 @@ pub(super) fn generate_body( return _serde::#private::Ok(__ok); } }; - enum_untagged::generate_body(params, untagged, cattrs, Some(first_attempt)) + enum_untagged::deserialize(params, untagged, cattrs, Some(first_attempt)) } None => deserialize_homogeneous_enum(params, variants, cattrs), } @@ -42,14 +42,14 @@ fn deserialize_homogeneous_enum( cattrs: &attr::Container, ) -> Fragment { match cattrs.tag() { - attr::TagType::External => enum_externally::generate_body(params, variants, cattrs), + attr::TagType::External => enum_externally::deserialize(params, variants, cattrs), attr::TagType::Internal { tag } => { - enum_internally::generate_body(params, variants, cattrs, tag) + enum_internally::deserialize(params, variants, cattrs, tag) } attr::TagType::Adjacent { tag, content } => { - enum_adjacently::generate_body(params, variants, cattrs, tag, content) + enum_adjacently::deserialize(params, variants, cattrs, tag, content) } - attr::TagType::None => enum_untagged::generate_body(params, variants, cattrs, None), + attr::TagType::None => enum_untagged::deserialize(params, variants, cattrs, None), } } diff --git a/serde_derive/src/de/enum_adjacently.rs b/serde_derive/src/de/enum_adjacently.rs index 7b07c188..58ed47b7 100644 --- a/serde_derive/src/de/enum_adjacently.rs +++ b/serde_derive/src/de/enum_adjacently.rs @@ -16,7 +16,7 @@ use quote::{quote, quote_spanned}; use syn::spanned::Spanned; /// Generates `Deserialize::deserialize` body for an `enum Enum {...}` with `#[serde(tag, content)]` attributes -pub(super) fn generate_body( +pub(super) fn deserialize( params: &Parameters, variants: &[Variant], cattrs: &attr::Container, diff --git a/serde_derive/src/de/enum_externally.rs b/serde_derive/src/de/enum_externally.rs index ec79b97b..9e5bde3d 100644 --- a/serde_derive/src/de/enum_externally.rs +++ b/serde_derive/src/de/enum_externally.rs @@ -20,7 +20,7 @@ use quote::{quote, quote_spanned}; use syn::spanned::Spanned; /// Generates `Deserialize::deserialize` body for an `enum Enum {...}` without additional attributes -pub(super) fn generate_body( +pub(super) fn deserialize( params: &Parameters, variants: &[Variant], cattrs: &attr::Container, @@ -144,13 +144,13 @@ fn deserialize_externally_tagged_variant( &variant.fields[0], cattrs, ), - Style::Tuple => tuple::generate_body( + Style::Tuple => tuple::deserialize( params, &variant.fields, cattrs, TupleForm::ExternallyTagged(variant_ident), ), - Style::Struct => struct_::generate_body( + Style::Struct => struct_::deserialize( params, &variant.fields, cattrs, diff --git a/serde_derive/src/de/enum_internally.rs b/serde_derive/src/de/enum_internally.rs index 8566080a..30905f50 100644 --- a/serde_derive/src/de/enum_internally.rs +++ b/serde_derive/src/de/enum_internally.rs @@ -18,7 +18,7 @@ use crate::private; use quote::quote; /// Generates `Deserialize::deserialize` body for an `enum Enum {...}` with `#[serde(tag)]` attribute -pub(super) fn generate_body( +pub(super) fn deserialize( params: &Parameters, variants: &[Variant], cattrs: &attr::Container, @@ -95,7 +95,7 @@ fn deserialize_internally_tagged_variant( Style::Newtype => { enum_untagged::generate_newtype_variant(variant_ident, params, &variant.fields[0]) } - Style::Struct => struct_::generate_body( + Style::Struct => struct_::deserialize( params, &variant.fields, cattrs, diff --git a/serde_derive/src/de/enum_untagged.rs b/serde_derive/src/de/enum_untagged.rs index b65e045c..5a0fb178 100644 --- a/serde_derive/src/de/enum_untagged.rs +++ b/serde_derive/src/de/enum_untagged.rs @@ -19,7 +19,7 @@ use quote::{quote, quote_spanned}; use syn::spanned::Spanned; /// Generates `Deserialize::deserialize` body for an `enum Enum {...}` with `#[serde(untagged)]` attribute -pub(super) fn generate_body( +pub(super) fn deserialize( params: &Parameters, variants: &[Variant], cattrs: &attr::Container, @@ -93,13 +93,13 @@ pub(super) fn generate_variant( } } Style::Newtype => generate_newtype_variant(variant_ident, params, &variant.fields[0]), - Style::Tuple => tuple::generate_body( + Style::Tuple => tuple::deserialize( params, &variant.fields, cattrs, TupleForm::Untagged(variant_ident), ), - Style::Struct => struct_::generate_body( + Style::Struct => struct_::deserialize( params, &variant.fields, cattrs, diff --git a/serde_derive/src/de/struct_.rs b/serde_derive/src/de/struct_.rs index f5a77ecf..8465ae5b 100644 --- a/serde_derive/src/de/struct_.rs +++ b/serde_derive/src/de/struct_.rs @@ -14,7 +14,7 @@ use quote::{quote, quote_spanned}; use syn::spanned::Spanned; /// Generates `Deserialize::deserialize` body for a `struct Struct {...}` -pub(super) fn generate_body( +pub(super) fn deserialize( params: &Parameters, fields: &[Field], cattrs: &attr::Container, diff --git a/serde_derive/src/de/tuple.rs b/serde_derive/src/de/tuple.rs index 9db0b373..ee231171 100644 --- a/serde_derive/src/de/tuple.rs +++ b/serde_derive/src/de/tuple.rs @@ -10,7 +10,7 @@ use quote::{quote, quote_spanned}; use syn::spanned::Spanned; /// Generates `Deserialize::deserialize` body for a `struct Tuple(...);` including `struct Newtype(T);` -pub(super) fn generate_body( +pub(super) fn deserialize( params: &Parameters, fields: &[Field], cattrs: &attr::Container, diff --git a/serde_derive/src/de/unit.rs b/serde_derive/src/de/unit.rs index 1eef24c4..0d15ef4d 100644 --- a/serde_derive/src/de/unit.rs +++ b/serde_derive/src/de/unit.rs @@ -5,7 +5,7 @@ use crate::private; use quote::quote; /// Generates `Deserialize::deserialize` body for a `struct Unit;` -pub(super) fn generate_body(params: &Parameters, cattrs: &attr::Container) -> Fragment { +pub(super) fn deserialize(params: &Parameters, cattrs: &attr::Container) -> Fragment { let this_type = ¶ms.this_type; let this_value = ¶ms.this_value; let type_name = cattrs.name().deserialize_name(); From 8047570160ed277a961299e3439bce2115f02a11 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 25 Sep 2025 09:28:12 -0700 Subject: [PATCH 08/10] Rename generate_body_in_place -> deserialize_in_place --- serde_derive/src/de.rs | 4 ++-- serde_derive/src/de/struct_.rs | 2 +- serde_derive/src/de/tuple.rs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index 6df7b238..ca19bb6f 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -349,10 +349,10 @@ fn deserialize_in_place_body(cont: &Container, params: &Parameters) -> Option { - struct_::generate_body_in_place(params, fields, &cont.attrs)? + struct_::deserialize_in_place(params, fields, &cont.attrs)? } Data::Struct(Style::Tuple, fields) | Data::Struct(Style::Newtype, fields) => { - tuple::generate_body_in_place(params, fields, &cont.attrs) + tuple::deserialize_in_place(params, fields, &cont.attrs) } Data::Enum(_) | Data::Struct(Style::Unit, _) => { return None; diff --git a/serde_derive/src/de/struct_.rs b/serde_derive/src/de/struct_.rs index 8465ae5b..6a5da232 100644 --- a/serde_derive/src/de/struct_.rs +++ b/serde_derive/src/de/struct_.rs @@ -420,7 +420,7 @@ fn deserialize_map( /// Generates `Deserialize::deserialize_in_place` body for a `struct Struct {...}` #[cfg(feature = "deserialize_in_place")] -pub(super) fn generate_body_in_place( +pub(super) fn deserialize_in_place( params: &Parameters, fields: &[Field], cattrs: &attr::Container, diff --git a/serde_derive/src/de/tuple.rs b/serde_derive/src/de/tuple.rs index ee231171..a76089fe 100644 --- a/serde_derive/src/de/tuple.rs +++ b/serde_derive/src/de/tuple.rs @@ -183,7 +183,7 @@ fn deserialize_newtype_struct( /// Generates `Deserialize::deserialize_in_place` body for a `struct Tuple(...);` including `struct Newtype(T);` #[cfg(feature = "deserialize_in_place")] -pub(super) fn generate_body_in_place( +pub(super) fn deserialize_in_place( params: &Parameters, fields: &[Field], cattrs: &attr::Container, From 11ce4402bd083b880d2d482c9acb394d9bc85771 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 25 Sep 2025 09:37:43 -0700 Subject: [PATCH 09/10] Rename enum_untagged::generate_variant -> deserialize_variant --- serde_derive/src/de/enum_adjacently.rs | 2 +- serde_derive/src/de/enum_untagged.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/serde_derive/src/de/enum_adjacently.rs b/serde_derive/src/de/enum_adjacently.rs index 58ed47b7..467cfc0d 100644 --- a/serde_derive/src/de/enum_adjacently.rs +++ b/serde_derive/src/de/enum_adjacently.rs @@ -38,7 +38,7 @@ pub(super) fn deserialize( .map(|(i, variant)| { let variant_index = field_i(i); - let block = Match(enum_untagged::generate_variant(params, variant, cattrs)); + let block = Match(enum_untagged::deserialize_variant(params, variant, cattrs)); quote! { __Field::#variant_index => #block diff --git a/serde_derive/src/de/enum_untagged.rs b/serde_derive/src/de/enum_untagged.rs index 5a0fb178..9118ad60 100644 --- a/serde_derive/src/de/enum_untagged.rs +++ b/serde_derive/src/de/enum_untagged.rs @@ -28,7 +28,7 @@ pub(super) fn deserialize( let attempts = variants .iter() .filter(|variant| !variant.attrs.skip_deserializing()) - .map(|variant| Expr(generate_variant(params, variant, cattrs))); + .map(|variant| Expr(deserialize_variant(params, variant, cattrs))); // TODO this message could be better by saving the errors from the failed // attempts. The heuristic used by TOML was to count the number of fields // processed before an error, and use the error that happened after the @@ -59,7 +59,7 @@ pub(super) fn deserialize( } // Also used by adjacently tagged enums -pub(super) fn generate_variant( +pub(super) fn deserialize_variant( params: &Parameters, variant: &Variant, cattrs: &attr::Container, From 3a7c11c82c431e5f4af8797a1c3a98613061a293 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 25 Sep 2025 09:38:13 -0700 Subject: [PATCH 10/10] Rename enum_untagged::generate_newtype_variant -> deserialize_newtype_variant --- serde_derive/src/de/enum_internally.rs | 2 +- serde_derive/src/de/enum_untagged.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/serde_derive/src/de/enum_internally.rs b/serde_derive/src/de/enum_internally.rs index 30905f50..b669eef7 100644 --- a/serde_derive/src/de/enum_internally.rs +++ b/serde_derive/src/de/enum_internally.rs @@ -93,7 +93,7 @@ fn deserialize_internally_tagged_variant( } } Style::Newtype => { - enum_untagged::generate_newtype_variant(variant_ident, params, &variant.fields[0]) + enum_untagged::deserialize_newtype_variant(variant_ident, params, &variant.fields[0]) } Style::Struct => struct_::deserialize( params, diff --git a/serde_derive/src/de/enum_untagged.rs b/serde_derive/src/de/enum_untagged.rs index 9118ad60..f66d98de 100644 --- a/serde_derive/src/de/enum_untagged.rs +++ b/serde_derive/src/de/enum_untagged.rs @@ -92,7 +92,7 @@ pub(super) fn deserialize_variant( } } } - Style::Newtype => generate_newtype_variant(variant_ident, params, &variant.fields[0]), + Style::Newtype => deserialize_newtype_variant(variant_ident, params, &variant.fields[0]), Style::Tuple => tuple::deserialize( params, &variant.fields, @@ -110,7 +110,7 @@ pub(super) fn deserialize_variant( // Also used by internally tagged enums // Implicitly (via `generate_variant`) used by adjacently tagged enums -pub(super) fn generate_newtype_variant( +pub(super) fn deserialize_newtype_variant( variant_ident: &syn::Ident, params: &Parameters, field: &Field,