mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-25 15:07:56 +00:00
Remove use of ref keyword from serde_derive
This commit is contained in:
+61
-66
@@ -75,7 +75,7 @@ fn precondition(cx: &Ctxt, cont: &Container) {
|
||||
}
|
||||
|
||||
fn precondition_sized(cx: &Ctxt, cont: &Container) {
|
||||
if let Data::Struct(_, ref fields) = cont.data {
|
||||
if let Data::Struct(_, fields) = &cont.data {
|
||||
if let Some(last) = fields.last() {
|
||||
if let syn::Type::Slice(_) = *last.ty {
|
||||
cx.error_spanned_by(
|
||||
@@ -229,8 +229,8 @@ impl BorrowedLifetimes {
|
||||
}
|
||||
|
||||
fn de_lifetime_def(&self) -> Option<syn::LifetimeDef> {
|
||||
match *self {
|
||||
BorrowedLifetimes::Borrowed(ref bounds) => Some(syn::LifetimeDef {
|
||||
match self {
|
||||
BorrowedLifetimes::Borrowed(bounds) => Some(syn::LifetimeDef {
|
||||
attrs: Vec::new(),
|
||||
lifetime: syn::Lifetime::new("'de", Span::call_site()),
|
||||
colon_token: None,
|
||||
@@ -272,21 +272,19 @@ fn deserialize_body(cont: &Container, params: &Parameters) -> Fragment {
|
||||
} else if let Some(type_try_from) = cont.attrs.type_try_from() {
|
||||
deserialize_try_from(type_try_from)
|
||||
} else if let attr::Identifier::No = cont.attrs.identifier() {
|
||||
match cont.data {
|
||||
Data::Enum(ref variants) => deserialize_enum(params, variants, &cont.attrs),
|
||||
Data::Struct(Style::Struct, ref fields) => {
|
||||
match &cont.data {
|
||||
Data::Enum(variants) => deserialize_enum(params, variants, &cont.attrs),
|
||||
Data::Struct(Style::Struct, fields) => {
|
||||
deserialize_struct(None, params, fields, &cont.attrs, None, &Untagged::No)
|
||||
}
|
||||
Data::Struct(Style::Tuple, ref fields) | Data::Struct(Style::Newtype, ref fields) => {
|
||||
Data::Struct(Style::Tuple, fields) | Data::Struct(Style::Newtype, fields) => {
|
||||
deserialize_tuple(None, params, fields, &cont.attrs, None)
|
||||
}
|
||||
Data::Struct(Style::Unit, _) => deserialize_unit_struct(params, &cont.attrs),
|
||||
}
|
||||
} else {
|
||||
match cont.data {
|
||||
Data::Enum(ref variants) => {
|
||||
deserialize_custom_identifier(params, variants, &cont.attrs)
|
||||
}
|
||||
match &cont.data {
|
||||
Data::Enum(variants) => deserialize_custom_identifier(params, variants, &cont.attrs),
|
||||
Data::Struct(_, _) => unreachable!("checked in serde_derive_internals"),
|
||||
}
|
||||
}
|
||||
@@ -310,8 +308,8 @@ fn deserialize_in_place_body(cont: &Container, params: &Parameters) -> Option<St
|
||||
return None;
|
||||
}
|
||||
|
||||
let code = match cont.data {
|
||||
Data::Struct(Style::Struct, ref fields) => {
|
||||
let code = match &cont.data {
|
||||
Data::Struct(Style::Struct, fields) => {
|
||||
if let Some(code) = deserialize_struct_in_place(None, params, fields, &cont.attrs, None)
|
||||
{
|
||||
code
|
||||
@@ -319,7 +317,7 @@ fn deserialize_in_place_body(cont: &Container, params: &Parameters) -> Option<St
|
||||
return None;
|
||||
}
|
||||
}
|
||||
Data::Struct(Style::Tuple, ref fields) | Data::Struct(Style::Newtype, ref fields) => {
|
||||
Data::Struct(Style::Tuple, fields) | Data::Struct(Style::Newtype, fields) => {
|
||||
deserialize_tuple_in_place(None, params, fields, &cont.attrs, None)
|
||||
}
|
||||
Data::Enum(_) | Data::Struct(Style::Unit, _) => {
|
||||
@@ -348,8 +346,8 @@ fn deserialize_in_place_body(_cont: &Container, _params: &Parameters) -> Option<
|
||||
}
|
||||
|
||||
fn deserialize_transparent(cont: &Container, params: &Parameters) -> Fragment {
|
||||
let fields = match cont.data {
|
||||
Data::Struct(_, ref fields) => fields,
|
||||
let fields = match &cont.data {
|
||||
Data::Struct(_, fields) => fields,
|
||||
Data::Enum(_) => unreachable!(),
|
||||
};
|
||||
|
||||
@@ -369,9 +367,9 @@ fn deserialize_transparent(cont: &Container, params: &Parameters) -> Fragment {
|
||||
if field as *const Field == transparent_field as *const Field {
|
||||
quote!(#member: __transparent)
|
||||
} else {
|
||||
let value = match *field.attrs.default() {
|
||||
let value = match field.attrs.default() {
|
||||
attr::Default::Default => quote!(_serde::export::Default::default()),
|
||||
attr::Default::Path(ref path) => quote!(#path()),
|
||||
attr::Default::Path(path) => quote!(#path()),
|
||||
attr::Default::None => quote!(_serde::export::PhantomData),
|
||||
};
|
||||
quote!(#member: #value)
|
||||
@@ -456,7 +454,7 @@ fn deserialize_tuple(
|
||||
|
||||
let is_enum = variant_ident.is_some();
|
||||
let type_path = match variant_ident {
|
||||
Some(ref variant_ident) => quote!(#construct::#variant_ident),
|
||||
Some(variant_ident) => quote!(#construct::#variant_ident),
|
||||
None => construct,
|
||||
};
|
||||
let expecting = match variant_ident {
|
||||
@@ -664,9 +662,9 @@ fn deserialize_seq(
|
||||
})
|
||||
}
|
||||
};
|
||||
let value_if_none = match *field.attrs.default() {
|
||||
let value_if_none = match field.attrs.default() {
|
||||
attr::Default::Default => quote!(_serde::export::Default::default()),
|
||||
attr::Default::Path(ref path) => quote!(#path()),
|
||||
attr::Default::Path(path) => quote!(#path()),
|
||||
attr::Default::None => quote!(
|
||||
return _serde::export::Err(_serde::de::Error::invalid_length(#index_in_seq, &#expecting));
|
||||
),
|
||||
@@ -702,11 +700,11 @@ fn deserialize_seq(
|
||||
};
|
||||
}
|
||||
|
||||
let let_default = match *cattrs.default() {
|
||||
let let_default = match cattrs.default() {
|
||||
attr::Default::Default => Some(quote!(
|
||||
let __default: Self::Value = _serde::export::Default::default();
|
||||
)),
|
||||
attr::Default::Path(ref path) => Some(quote!(
|
||||
attr::Default::Path(path) => Some(quote!(
|
||||
let __default: Self::Value = #path();
|
||||
)),
|
||||
attr::Default::None => {
|
||||
@@ -750,11 +748,11 @@ fn deserialize_seq_in_place(
|
||||
self.place.#member = #default;
|
||||
}
|
||||
} else {
|
||||
let value_if_none = match *field.attrs.default() {
|
||||
let value_if_none = match field.attrs.default() {
|
||||
attr::Default::Default => quote!(
|
||||
self.place.#member = _serde::export::Default::default();
|
||||
),
|
||||
attr::Default::Path(ref path) => quote!(
|
||||
attr::Default::Path(path) => quote!(
|
||||
self.place.#member = #path();
|
||||
),
|
||||
attr::Default::None => quote!(
|
||||
@@ -793,11 +791,11 @@ fn deserialize_seq_in_place(
|
||||
|
||||
let this = ¶ms.this;
|
||||
let (_, ty_generics, _) = params.generics.split_for_impl();
|
||||
let let_default = match *cattrs.default() {
|
||||
let let_default = match cattrs.default() {
|
||||
attr::Default::Default => Some(quote!(
|
||||
let __default: #this #ty_generics = _serde::export::Default::default();
|
||||
)),
|
||||
attr::Default::Path(ref path) => Some(quote!(
|
||||
attr::Default::Path(path) => Some(quote!(
|
||||
let __default: #this #ty_generics = #path();
|
||||
)),
|
||||
attr::Default::None => {
|
||||
@@ -907,7 +905,7 @@ fn deserialize_struct(
|
||||
};
|
||||
|
||||
let type_path = match variant_ident {
|
||||
Some(ref variant_ident) => quote!(#construct::#variant_ident),
|
||||
Some(variant_ident) => quote!(#construct::#variant_ident),
|
||||
None => construct,
|
||||
};
|
||||
let expecting = match variant_ident {
|
||||
@@ -1144,15 +1142,14 @@ fn deserialize_enum(
|
||||
variants: &[Variant],
|
||||
cattrs: &attr::Container,
|
||||
) -> Fragment {
|
||||
match *cattrs.tag() {
|
||||
match cattrs.tag() {
|
||||
attr::TagType::External => deserialize_externally_tagged_enum(params, variants, cattrs),
|
||||
attr::TagType::Internal { ref tag } => {
|
||||
attr::TagType::Internal { tag } => {
|
||||
deserialize_internally_tagged_enum(params, variants, cattrs, tag)
|
||||
}
|
||||
attr::TagType::Adjacent {
|
||||
ref tag,
|
||||
ref content,
|
||||
} => deserialize_adjacently_tagged_enum(params, variants, cattrs, tag, content),
|
||||
attr::TagType::Adjacent { tag, content } => {
|
||||
deserialize_adjacently_tagged_enum(params, variants, cattrs, tag, content)
|
||||
}
|
||||
attr::TagType::None => deserialize_untagged_enum(params, variants, cattrs),
|
||||
}
|
||||
}
|
||||
@@ -1174,12 +1171,10 @@ fn prepare_enum_variant_enum(
|
||||
})
|
||||
.collect();
|
||||
|
||||
let other_idx = variants
|
||||
.iter()
|
||||
.position(|ref variant| variant.attrs.other());
|
||||
let other_idx = variants.iter().position(|variant| variant.attrs.other());
|
||||
|
||||
let variants_stmt = {
|
||||
let variant_names = variant_names_idents.iter().map(|&(ref name, _, _)| name);
|
||||
let variant_names = variant_names_idents.iter().map(|(name, _, _)| name);
|
||||
quote! {
|
||||
const VARIANTS: &'static [&'static str] = &[ #(#variant_names),* ];
|
||||
}
|
||||
@@ -1883,7 +1878,7 @@ fn deserialize_generated_identifier(
|
||||
other_idx: Option<usize>,
|
||||
) -> Fragment {
|
||||
let this = quote!(__Field);
|
||||
let field_idents: &Vec<_> = &fields.iter().map(|&(_, ref ident, _)| ident).collect();
|
||||
let field_idents: &Vec<_> = &fields.iter().map(|(_, ident, _)| ident).collect();
|
||||
|
||||
let (ignore_variant, fallthrough) = if !is_variant && cattrs.has_flatten() {
|
||||
let ignore_variant = quote!(__other(_serde::private::de::Content<'de>),);
|
||||
@@ -1989,7 +1984,7 @@ fn deserialize_custom_identifier(
|
||||
})
|
||||
.collect();
|
||||
|
||||
let names = names_idents.iter().map(|&(ref name, _, _)| name);
|
||||
let names = names_idents.iter().map(|(name, _, _)| name);
|
||||
|
||||
let names_const = if fallthrough.is_some() {
|
||||
None
|
||||
@@ -2046,26 +2041,26 @@ fn deserialize_identifier(
|
||||
collect_other_fields: bool,
|
||||
) -> Fragment {
|
||||
let mut flat_fields = Vec::new();
|
||||
for &(_, ref ident, ref aliases) in fields {
|
||||
for (_, ident, aliases) in fields {
|
||||
flat_fields.extend(aliases.iter().map(|alias| (alias, ident)))
|
||||
}
|
||||
|
||||
let field_strs = flat_fields.iter().map(|&(ref name, _)| name);
|
||||
let field_borrowed_strs = flat_fields.iter().map(|&(ref name, _)| name);
|
||||
let field_strs = flat_fields.iter().map(|(name, _)| name);
|
||||
let field_borrowed_strs = flat_fields.iter().map(|(name, _)| name);
|
||||
let field_bytes = flat_fields
|
||||
.iter()
|
||||
.map(|&(ref name, _)| Literal::byte_string(name.as_bytes()));
|
||||
.map(|(name, _)| Literal::byte_string(name.as_bytes()));
|
||||
let field_borrowed_bytes = flat_fields
|
||||
.iter()
|
||||
.map(|&(ref name, _)| Literal::byte_string(name.as_bytes()));
|
||||
.map(|(name, _)| Literal::byte_string(name.as_bytes()));
|
||||
|
||||
let constructors: &Vec<_> = &flat_fields
|
||||
.iter()
|
||||
.map(|&(_, ref ident)| quote!(#this::#ident))
|
||||
.map(|(_, ident)| quote!(#this::#ident))
|
||||
.collect();
|
||||
let main_constructors: &Vec<_> = &fields
|
||||
.iter()
|
||||
.map(|&(_, ref ident, _)| quote!(#this::#ident))
|
||||
.map(|(_, ident, _)| quote!(#this::#ident))
|
||||
.collect();
|
||||
|
||||
let expecting = if is_variant {
|
||||
@@ -2327,7 +2322,7 @@ fn deserialize_struct_as_struct_visitor(
|
||||
.collect();
|
||||
|
||||
let fields_stmt = {
|
||||
let field_names = field_names_idents.iter().map(|&(ref name, _, _)| name);
|
||||
let field_names = field_names_idents.iter().map(|(name, _, _)| name);
|
||||
quote_block! {
|
||||
const FIELDS: &'static [&'static str] = &[ #(#field_names),* ];
|
||||
}
|
||||
@@ -2383,7 +2378,7 @@ fn deserialize_map(
|
||||
let let_values = fields_names
|
||||
.iter()
|
||||
.filter(|&&(field, _)| !field.attrs.skip_deserializing() && !field.attrs.flatten())
|
||||
.map(|&(field, ref name)| {
|
||||
.map(|(field, name)| {
|
||||
let field_ty = field.ty;
|
||||
quote! {
|
||||
let mut #name: _serde::export::Option<#field_ty> = _serde::export::None;
|
||||
@@ -2406,7 +2401,7 @@ fn deserialize_map(
|
||||
let value_arms = fields_names
|
||||
.iter()
|
||||
.filter(|&&(field, _)| !field.attrs.skip_deserializing() && !field.attrs.flatten())
|
||||
.map(|&(field, ref name)| {
|
||||
.map(|(field, name)| {
|
||||
let deser_name = field.attrs.name().deserialize_name();
|
||||
|
||||
let visit = match field.attrs.deserialize_with() {
|
||||
@@ -2482,7 +2477,7 @@ fn deserialize_map(
|
||||
let extract_values = fields_names
|
||||
.iter()
|
||||
.filter(|&&(field, _)| !field.attrs.skip_deserializing() && !field.attrs.flatten())
|
||||
.map(|&(field, ref name)| {
|
||||
.map(|(field, name)| {
|
||||
let missing_expr = Match(expr_is_missing(field, cattrs));
|
||||
|
||||
quote! {
|
||||
@@ -2496,7 +2491,7 @@ fn deserialize_map(
|
||||
let extract_collected = fields_names
|
||||
.iter()
|
||||
.filter(|&&(field, _)| field.attrs.flatten() && !field.attrs.skip_deserializing())
|
||||
.map(|&(field, ref name)| {
|
||||
.map(|(field, name)| {
|
||||
let field_ty = field.ty;
|
||||
let func = match field.attrs.deserialize_with() {
|
||||
None => {
|
||||
@@ -2531,7 +2526,7 @@ fn deserialize_map(
|
||||
None
|
||||
};
|
||||
|
||||
let result = fields_names.iter().map(|&(field, ref name)| {
|
||||
let result = fields_names.iter().map(|(field, name)| {
|
||||
let member = &field.member;
|
||||
if field.attrs.skip_deserializing() {
|
||||
let value = Expr(expr_is_missing(field, cattrs));
|
||||
@@ -2541,11 +2536,11 @@ fn deserialize_map(
|
||||
}
|
||||
});
|
||||
|
||||
let let_default = match *cattrs.default() {
|
||||
let let_default = match cattrs.default() {
|
||||
attr::Default::Default => Some(quote!(
|
||||
let __default: Self::Value = _serde::export::Default::default();
|
||||
)),
|
||||
attr::Default::Path(ref path) => Some(quote!(
|
||||
attr::Default::Path(path) => Some(quote!(
|
||||
let __default: Self::Value = #path();
|
||||
)),
|
||||
attr::Default::None => {
|
||||
@@ -2604,7 +2599,7 @@ fn deserialize_struct_as_struct_in_place_visitor(
|
||||
.collect();
|
||||
|
||||
let fields_stmt = {
|
||||
let field_names = field_names_idents.iter().map(|&(ref name, _, _)| name);
|
||||
let field_names = field_names_idents.iter().map(|(name, _, _)| name);
|
||||
quote_block! {
|
||||
const FIELDS: &'static [&'static str] = &[ #(#field_names),* ];
|
||||
}
|
||||
@@ -2637,7 +2632,7 @@ fn deserialize_map_in_place(
|
||||
let let_flags = fields_names
|
||||
.iter()
|
||||
.filter(|&&(field, _)| !field.attrs.skip_deserializing())
|
||||
.map(|&(_, ref name)| {
|
||||
.map(|(_, name)| {
|
||||
quote! {
|
||||
let mut #name: bool = false;
|
||||
}
|
||||
@@ -2647,7 +2642,7 @@ fn deserialize_map_in_place(
|
||||
let value_arms_from = fields_names
|
||||
.iter()
|
||||
.filter(|&&(field, _)| !field.attrs.skip_deserializing())
|
||||
.map(|&(field, ref name)| {
|
||||
.map(|(field, name)| {
|
||||
let deser_name = field.attrs.name().deserialize_name();
|
||||
let member = &field.member;
|
||||
|
||||
@@ -2714,7 +2709,7 @@ fn deserialize_map_in_place(
|
||||
let check_flags = fields_names
|
||||
.iter()
|
||||
.filter(|&&(field, _)| !field.attrs.skip_deserializing())
|
||||
.map(|&(field, ref name)| {
|
||||
.map(|(field, name)| {
|
||||
let missing_expr = expr_is_missing(field, cattrs);
|
||||
// If missing_expr unconditionally returns an error, don't try
|
||||
// to assign its value to self.place.
|
||||
@@ -2742,11 +2737,11 @@ fn deserialize_map_in_place(
|
||||
let this = ¶ms.this;
|
||||
let (_, _, ty_generics, _) = split_with_de_lifetime(params);
|
||||
|
||||
let let_default = match *cattrs.default() {
|
||||
let let_default = match cattrs.default() {
|
||||
attr::Default::Default => Some(quote!(
|
||||
let __default: #this #ty_generics = _serde::export::Default::default();
|
||||
)),
|
||||
attr::Default::Path(ref path) => Some(quote!(
|
||||
attr::Default::Path(path) => Some(quote!(
|
||||
let __default: #this #ty_generics = #path();
|
||||
)),
|
||||
attr::Default::None => {
|
||||
@@ -2865,13 +2860,13 @@ fn wrap_deserialize_variant_with(
|
||||
}
|
||||
|
||||
fn expr_is_missing(field: &Field, cattrs: &attr::Container) -> Fragment {
|
||||
match *field.attrs.default() {
|
||||
match field.attrs.default() {
|
||||
attr::Default::Default => {
|
||||
let span = field.original.span();
|
||||
let func = quote_spanned!(span=> _serde::export::Default::default);
|
||||
return quote_expr!(#func());
|
||||
}
|
||||
attr::Default::Path(ref path) => {
|
||||
attr::Default::Path(path) => {
|
||||
return quote_expr!(#path());
|
||||
}
|
||||
attr::Default::None => { /* below */ }
|
||||
@@ -2935,11 +2930,11 @@ impl<'a> ToTokens for InPlaceImplGenerics<'a> {
|
||||
|
||||
// Add lifetime for `&'place mut Self, and `'a: 'place`
|
||||
for param in &mut generics.params {
|
||||
match *param {
|
||||
syn::GenericParam::Lifetime(ref mut param) => {
|
||||
match param {
|
||||
syn::GenericParam::Lifetime(param) => {
|
||||
param.bounds.push(place_lifetime.lifetime.clone());
|
||||
}
|
||||
syn::GenericParam::Type(ref mut param) => {
|
||||
syn::GenericParam::Type(param) => {
|
||||
param.bounds.push(syn::TypeParamBound::Lifetime(
|
||||
place_lifetime.lifetime.clone(),
|
||||
));
|
||||
|
||||
Reference in New Issue
Block a user