From 9f9a1ea35ee43b1a4d77171f50eaeaedd7583009 Mon Sep 17 00:00:00 2001 From: Mingun Date: Thu, 29 May 2025 22:22:52 +0500 Subject: [PATCH] Do not use ? operator in the generated code where possible This may slightly improve compilation time and costs nothing --- serde_derive/src/de.rs | 9 ++++++--- serde_derive/src/de/enum_adjacently.rs | 14 ++++++++------ serde_derive/src/de/enum_externally.rs | 5 +++-- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index ca19bb6f..bd3aac83 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -594,13 +594,16 @@ fn deserialize_seq_in_place( let (wrapper, wrapper_ty) = wrap_deserialize_field_with(params, field.ty, path); quote!({ #wrapper - match _serde::de::SeqAccess::next_element::<#wrapper_ty>(&mut __seq)? { - _serde::#private::Some(__wrap) => { + match _serde::de::SeqAccess::next_element::<#wrapper_ty>(&mut __seq) { + _serde::#private::Ok(_serde::#private::Some(__wrap)) => { self.place.#member = __wrap.value; } - _serde::#private::None => { + _serde::#private::Ok(_serde::#private::None) => { #value_if_none; } + _serde::#private::Err(__err) => { + return _serde::#private::Err(__err); + } } }) } diff --git a/serde_derive/src/de/enum_adjacently.rs b/serde_derive/src/de/enum_adjacently.rs index 467cfc0d..cbb90dbd 100644 --- a/serde_derive/src/de/enum_adjacently.rs +++ b/serde_derive/src/de/enum_adjacently.rs @@ -282,8 +282,8 @@ pub(super) fn deserialize( __A: _serde::de::SeqAccess<#delife>, { // Visit the first element - the tag. - match _serde::de::SeqAccess::next_element(&mut __seq)? { - _serde::#private::Some(__variant) => { + match _serde::de::SeqAccess::next_element(&mut __seq) { + _serde::#private::Ok(_serde::#private::Some(__variant)) => { // Visit the second element - the content. match _serde::de::SeqAccess::next_element_seed( &mut __seq, @@ -292,18 +292,20 @@ pub(super) fn deserialize( marker: _serde::#private::PhantomData, lifetime: _serde::#private::PhantomData, }, - )? { - _serde::#private::Some(__ret) => _serde::#private::Ok(__ret), + ) { + _serde::#private::Ok(_serde::#private::Some(__ret)) => _serde::#private::Ok(__ret), // There is no second element. - _serde::#private::None => { + _serde::#private::Ok(_serde::#private::None) => { _serde::#private::Err(_serde::de::Error::invalid_length(1, &self)) } + _serde::#private::Err(__err) => _serde::#private::Err(__err), } } // There is no first element. - _serde::#private::None => { + _serde::#private::Ok(_serde::#private::None) => { _serde::#private::Err(_serde::de::Error::invalid_length(0, &self)) } + _serde::#private::Err(__err) => _serde::#private::Err(__err), } } } diff --git a/serde_derive/src/de/enum_externally.rs b/serde_derive/src/de/enum_externally.rs index 9e5bde3d..1a4c36b4 100644 --- a/serde_derive/src/de/enum_externally.rs +++ b/serde_derive/src/de/enum_externally.rs @@ -49,7 +49,7 @@ pub(super) fn deserialize( )); quote! { - (__Field::#variant_name, __variant) => #block + _serde::#private::Ok((__Field::#variant_name, __variant)) => #block } }); @@ -69,8 +69,9 @@ pub(super) fn deserialize( } } else { quote! { - match _serde::de::EnumAccess::variant(__data)? { + match _serde::de::EnumAccess::variant(__data) { #(#variant_arms)* + _serde::#private::Err(__err) => _serde::#private::Err(__err), } } };