Improve Serialize of adjacently tagged newtype variants
The existing implementation was unnecessarily complicated. struct __AdjacentlyTagged<'__a> { data: (&'__a String,), phantom: _serde::export::PhantomData<AdjacentlyTagged>, } impl<'__a> _serde::Serialize for __AdjacentlyTagged<'__a> { fn serialize<__S>( &self, __serializer: __S, ) -> _serde::export::Result<__S::Ok, __S::Error> where __S: _serde::Serializer, { let (__field0,) = self.data; _serde::Serialize::serialize(__field0, __serializer) } } _serde::ser::SerializeStruct::serialize_field( &mut __struct, "content", &__AdjacentlyTagged { data: (__field0,), phantom: _serde::export::PhantomData::<AdjacentlyTagged>, }, )?; Instead the new implementation does simply: _serde::ser::SerializeStruct::serialize_field( &mut __struct, "content", __field0, )?;
This commit is contained in:
parent
b37cf858ce
commit
6d1807bb4a
@ -596,9 +596,15 @@ fn serialize_adjacently_tagged_variant(
|
||||
field_expr = wrap_serialize_field_with(params, field.ty, path, &field_expr);
|
||||
}
|
||||
|
||||
quote_expr! {
|
||||
_serde::Serialize::serialize(#field_expr, __serializer)
|
||||
}
|
||||
return quote_block! {
|
||||
let mut __struct = try!(_serde::Serializer::serialize_struct(
|
||||
__serializer, #type_name, 2));
|
||||
try!(_serde::ser::SerializeStruct::serialize_field(
|
||||
&mut __struct, #tag, #variant_name));
|
||||
try!(_serde::ser::SerializeStruct::serialize_field(
|
||||
&mut __struct, #content, #field_expr));
|
||||
_serde::ser::SerializeStruct::end(__struct)
|
||||
};
|
||||
}
|
||||
Style::Tuple => {
|
||||
serialize_tuple_variant(TupleVariant::Untagged, params, &variant.fields)
|
||||
|
Loading…
x
Reference in New Issue
Block a user