yaserde/yaserde_derive/src/de/build_default_value.rs
Marc-Antoine Arnaud 29e6736d8d format code
2019-10-08 09:04:29 +02:00

24 lines
530 B
Rust

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, Span::call_site());
Some(quote! {
#[allow(unused_mut)]
let mut #label : #field_type = #default_function();
})
} else {
Some(quote! {
#[allow(unused_mut)]
let mut #label : #field_type = #value;
})
}
}