mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-18 15:31:02 +00:00
Do not generate DeserializeSeed impl when not needed
This function is called for untagged, internally and externally tagged enums, but `deserializer` parameter is `None` only for the latest. Only when it's `None` `DeserializeSeed` impl is used
This commit is contained in:
@@ -954,6 +954,7 @@ fn deserialize_struct(
|
|||||||
lifetime: _serde::__private::PhantomData,
|
lifetime: _serde::__private::PhantomData,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
let need_seed = deserializer.is_none();
|
||||||
let dispatch = if let Some(deserializer) = deserializer {
|
let dispatch = if let Some(deserializer) = deserializer {
|
||||||
quote! {
|
quote! {
|
||||||
_serde::Deserializer::deserialize_any(#deserializer, #visitor_expr)
|
_serde::Deserializer::deserialize_any(#deserializer, #visitor_expr)
|
||||||
@@ -999,7 +1000,7 @@ fn deserialize_struct(
|
|||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
|
|
||||||
let visitor_seed = if is_enum && cattrs.has_flatten() {
|
let visitor_seed = if need_seed && is_enum && cattrs.has_flatten() {
|
||||||
Some(quote! {
|
Some(quote! {
|
||||||
impl #de_impl_generics _serde::de::DeserializeSeed<#delife> for __Visitor #de_ty_generics #where_clause {
|
impl #de_impl_generics _serde::de::DeserializeSeed<#delife> for __Visitor #de_ty_generics #where_clause {
|
||||||
type Value = #this_type #ty_generics;
|
type Value = #this_type #ty_generics;
|
||||||
|
|||||||
Reference in New Issue
Block a user