UFCS for Option::map and Result::map

This commit is contained in:
David Tolnay
2017-03-18 13:28:42 -07:00
parent d60595cc27
commit 08e2182042
+11 -8
View File
@@ -272,8 +272,9 @@ fn deserialize_seq(ident: &syn::Ident,
ident, generics, field.ty, path); ident, generics, field.ty, path);
quote!({ quote!({
#wrapper #wrapper
try!(_serde::de::SeqVisitor::visit::<#wrapper_ty>(&mut __visitor)) _serde::export::Option::map(
.map(|__wrap| __wrap.value) try!(_serde::de::SeqVisitor::visit::<#wrapper_ty>(&mut __visitor)),
|__wrap| __wrap.value)
}) })
} }
}; };
@@ -515,10 +516,11 @@ fn deserialize_externally_tagged_enum(ident: &syn::Ident,
// all variants have `#[serde(skip_deserializing)]`. // all variants have `#[serde(skip_deserializing)]`.
quote! { quote! {
// FIXME: Once we drop support for Rust 1.15: // FIXME: Once we drop support for Rust 1.15:
// let _serde::export::Err(err) = _serde::de::EnumVisitor::visit_variant::<__Field>(__visitor); // let _serde::export::Err(__err) = _serde::de::EnumVisitor::visit_variant::<__Field>(__visitor);
// _serde::export::Err(err) // _serde::export::Err(__err)
_serde::de::EnumVisitor::visit_variant::<__Field>(__visitor) _serde::export::Result::map(
.map(|(impossible, _)| match impossible {}) _serde::de::EnumVisitor::visit_variant::<__Field>(__visitor),
|(__impossible, _)| match __impossible {})
} }
} else { } else {
quote! { quote! {
@@ -1251,8 +1253,9 @@ fn deserialize_map(ident: &syn::Ident,
quote! { quote! {
// FIXME: Once we drop support for Rust 1.15: // FIXME: Once we drop support for Rust 1.15:
// let _serde::export::None::<__Field> = try!(_serde::de::MapVisitor::visit_key(&mut __visitor)); // let _serde::export::None::<__Field> = try!(_serde::de::MapVisitor::visit_key(&mut __visitor));
try!(_serde::de::MapVisitor::visit_key::<__Field>(&mut __visitor)) _serde::export::Option::map(
.map(|impossible| match impossible {}); try!(_serde::de::MapVisitor::visit_key::<__Field>(&mut __visitor)),
|__impossible| match __impossible {});
} }
} else { } else {
quote! { quote! {