diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index e15b6d18..cff71d95 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -2384,7 +2384,12 @@ fn deserialize_map( let (wrapper, wrapper_ty) = wrap_deserialize_field_with(params, field.ty, path); quote!({ #wrapper - try!(_serde::de::MapAccess::next_value::<#wrapper_ty>(&mut __map)).value + match _serde::de::MapAccess::next_value::<#wrapper_ty>(&mut __map) { + _serde::export::Ok(__wrapper) => __wrapper.value, + _serde::export::Err(__err) => { + return _serde::export::Err(__err); + } + } }) } }; @@ -2615,7 +2620,12 @@ fn deserialize_map_in_place( let (wrapper, wrapper_ty) = wrap_deserialize_field_with(params, field.ty, path); quote!({ #wrapper - self.place.#member = try!(_serde::de::MapAccess::next_value::<#wrapper_ty>(&mut __map)).value + self.place.#member = match _serde::de::MapAccess::next_value::<#wrapper_ty>(&mut __map) { + _serde::export::Ok(__wrapper) => __wrapper.value, + _serde::export::Err(__err) => { + return _serde::export::Err(__err); + } + }; }) } };