yaserde/yaserde_derive/src/de/build_default_value.rs
2024-02-06 00:36:58 +01:00

36 lines
785 B
Rust

use crate::common::YaSerdeField;
use proc_macro2::TokenStream;
use quote::quote;
pub fn build_default_value(
field: &YaSerdeField,
field_type: Option<TokenStream>,
) -> Option<TokenStream> {
let label = field.get_value_label();
let field_type = field_type
.map(|field_type| quote!(: Option::<#field_type>))
.unwrap_or_default();
Some(quote! {
#[allow(unused_mut)]
let mut #label #field_type = None;
})
}
pub fn build_default_vec_value(
field: &YaSerdeField,
field_type: Option<TokenStream>,
) -> Option<TokenStream> {
let label = field.get_value_label();
let field_type = field_type
.map(|field_type| quote!(: #field_type))
.unwrap_or_default();
Some(quote! {
#[allow(unused_mut)]
let mut #label #field_type = vec![];
})
}