From 15be2a600a3e8692cd755f3cf48ab95baf7bcae7 Mon Sep 17 00:00:00 2001 From: Mingun Date: Sun, 11 Aug 2024 02:06:52 +0500 Subject: [PATCH] Remove confusing call to deserialize_untagged_variant in deserialize_internally_tagged_variant deserialize_untagged_variant in that place is called when deserialzie_with attribute is set. In that case it performs special actions that is better to use explicitly in deserialize_untagged_variant for readability --- serde_derive/src/de.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index 26c57c9d..747e4519 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -1868,8 +1868,11 @@ fn deserialize_internally_tagged_variant( cattrs: &attr::Container, deserializer: TokenStream, ) -> Fragment { - if variant.attrs.deserialize_with().is_some() { - return deserialize_untagged_variant(params, variant, cattrs, deserializer); + if let Some(path) = variant.attrs.deserialize_with() { + let unwrap_fn = unwrap_to_variant_closure(params, variant, false); + return quote_block! { + _serde::#private::Result::map(#path(#deserializer), #unwrap_fn) + }; } let variant_ident = &variant.ident;