cgp_component_macro_lib/derive_component/
component_name.rs

1use syn::punctuated::Punctuated;
2use syn::token::Comma;
3use syn::{parse_quote, Ident, ItemStruct};
4
5pub fn derive_component_name_struct(
6    component_name: &Ident,
7    component_params: &Punctuated<Ident, Comma>,
8) -> ItemStruct {
9    if component_params.is_empty() {
10        parse_quote!(pub struct #component_name ;)
11    } else {
12        parse_quote!(pub struct #component_name < #component_params > ( pub core::marker::PhantomData<( #component_params )> );)
13    }
14}