in gazebo_derive/src/default.rs [30:60]
fn default_struct(data: &DataStruct) -> TokenStream {
match data.fields {
Fields::Named(ref fields) => {
// Self {x: Default::default(), y: Default::default()}
let xs = fields.named.iter().map(|f| {
let name = &f.ident;
quote_spanned! {f.span() =>
#name: ::std::default::Default::default()
}
});
quote! {
Self { #(#xs, )* }
}
}
Fields::Unnamed(ref fields) => {
// Self(Default::default(), Default::default())
let xs = fields.unnamed.iter().map(|f| {
quote_spanned! {f.span()=>
::std::default::Default::default()
}
});
quote! {
Self ( #(#xs, )* )
}
}
Fields::Unit => {
// Self
quote!(Self)
}
}
}