From df93fab5fa3df9e970443458b5b8e582a9066a36 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 21 Apr 2018 13:25:24 -0700 Subject: [PATCH] Reduce instantiations of Result::map in Deserialize of unit variants This eliminates 110 instantiations of Result::map in Xi and reduces binary size by 229 kilobytes. --- serde_derive/src/de.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index e6e0cd49..e20ce917 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -1626,12 +1626,13 @@ fn deserialize_untagged_variant( let type_name = params.type_name(); let variant_name = variant.ident.as_ref(); quote_expr! { - _serde::export::Result::map( - _serde::Deserializer::deserialize_any( - #deserializer, - _serde::private::de::UntaggedUnitVisitor::new(#type_name, #variant_name) - ), - |()| #this::#variant_ident) + match _serde::Deserializer::deserialize_any( + #deserializer, + _serde::private::de::UntaggedUnitVisitor::new(#type_name, #variant_name) + ) { + _serde::export::Ok(()) => _serde::export::Ok(#this::#variant_ident), + _serde::export::Err(__err) => _serde::export::Err(__err), + } } } Style::Newtype => deserialize_untagged_newtype_variant(