diff --git a/yaserde_derive/src/de/build_default_value.rs b/yaserde_derive/src/de/build_default_value.rs index 39561e4..22a024e 100644 --- a/yaserde_derive/src/de/build_default_value.rs +++ b/yaserde_derive/src/de/build_default_value.rs @@ -7,22 +7,22 @@ pub fn build_default_value( value: &TokenStream, default: &Option, ) -> Option { - if let Some(d) = default { - let default_function = Ident::new( - &d, - label - .as_ref() - .map_or(Span::call_site(), |ident| ident.span()), - ); + let value = default + .as_ref() + .map(|d| { + let default_function = Ident::new( + &d, + label + .as_ref() + .map_or(Span::call_site(), |ident| ident.span()), + ); - Some(quote! { - #[allow(unused_mut)] - let mut #label : #field_type = #default_function(); + quote!(#default_function()) }) - } else { - Some(quote! { - #[allow(unused_mut)] - let mut #label : #field_type = #value; - }) - } + .unwrap_or_else(|| quote!(#value)); + + Some(quote! { + #[allow(unused_mut)] + let mut #label : #field_type = #value; + }) } diff --git a/yaserde_derive/src/ser/expand_enum.rs b/yaserde_derive/src/ser/expand_enum.rs index 71cd343..fb42821 100644 --- a/yaserde_derive/src/ser/expand_enum.rs +++ b/yaserde_derive/src/ser/expand_enum.rs @@ -1,9 +1,6 @@ use crate::attribute::*; use crate::field_type::*; -use crate::ser::{ - implement_deserializer::implement_deserializer, - label::build_label_name, -}; +use crate::ser::{implement_deserializer::implement_deserializer, label::build_label_name}; use proc_macro2::TokenStream; use syn::spanned::Spanned; use syn::DataEnum; @@ -33,7 +30,7 @@ fn inner_enum_inspector( data_enum: &DataEnum, name: &Ident, root_attributes: &YaSerdeAttribute, - ) -> TokenStream { +) -> TokenStream { data_enum .variants .iter() diff --git a/yaserde_derive/src/ser/expand_struct.rs b/yaserde_derive/src/ser/expand_struct.rs index 4b36882..16bfed5 100644 --- a/yaserde_derive/src/ser/expand_struct.rs +++ b/yaserde_derive/src/ser/expand_struct.rs @@ -1,9 +1,7 @@ use crate::attribute::*; use crate::field_type::*; use crate::ser::{ - element::*, - implement_deserializer::implement_deserializer, - label::build_label_name, + element::*, implement_deserializer::implement_deserializer, label::build_label_name, }; use proc_macro2::TokenStream; use syn::spanned::Spanned; @@ -27,7 +25,11 @@ pub fn serialize( let label = &field.ident; - let label_name = build_label_name(&label.as_ref().unwrap(), &field_attrs, &root_attributes.default_namespace); + let label_name = build_label_name( + &label.as_ref().unwrap(), + &field_attrs, + &root_attributes.default_namespace, + ); get_field_type(field).and_then(|f| match f { FieldType::FieldTypeString @@ -223,7 +225,11 @@ pub fn serialize( )); } - let label_name = build_label_name(&label.as_ref().unwrap(), &field_attrs, &root_attributes.default_namespace); + let label_name = build_label_name( + &label.as_ref().unwrap(), + &field_attrs, + &root_attributes.default_namespace, + ); let conditions = condition_generator(label, &field_attrs); get_field_type(field).and_then(|f| match f { diff --git a/yaserde_derive/src/ser/label.rs b/yaserde_derive/src/ser/label.rs index 640ab49..b77ee2e 100644 --- a/yaserde_derive/src/ser/label.rs +++ b/yaserde_derive/src/ser/label.rs @@ -1,4 +1,3 @@ - use crate::attribute::YaSerdeAttribute; use proc_macro2::Ident; diff --git a/yaserde_derive/src/ser/mod.rs b/yaserde_derive/src/ser/mod.rs index 10255ca..6e5e8c1 100644 --- a/yaserde_derive/src/ser/mod.rs +++ b/yaserde_derive/src/ser/mod.rs @@ -1,8 +1,8 @@ pub mod element; pub mod expand_enum; pub mod expand_struct; -pub mod label; pub mod implement_deserializer; +pub mod label; pub mod namespace; use crate::attribute::YaSerdeAttribute;