yaserde_derive 0.3.11

Serialization and deserialization macros
Documentation
use proc_macro2::{Span, TokenStream};
use syn::Ident;

pub fn build_default_value(
  label: &Option<Ident>,
  field_type: &TokenStream,
  value: &TokenStream,
  default: &Option<String>,
) -> Option<TokenStream> {
  if let Some(d) = default {
    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();
    })
  } else {
    Some(quote! {
      #[allow(unused_mut)]
      let mut #label : #field_type = #value;
    })
  }
}