cgp_component_macro_lib/delegate_components/
delegate.rs

1use proc_macro2::TokenStream;
2use quote::ToTokens;
3
4use crate::delegate_components::ast::DelegateComponentsAst;
5use crate::delegate_components::impl_delegate::impl_delegate_components;
6
7pub fn delegate_components(body: TokenStream) -> syn::Result<TokenStream> {
8    let ast: DelegateComponentsAst = syn::parse2(body)?;
9
10    let impl_items = impl_delegate_components(
11        &ast.target_type,
12        &ast.target_generics,
13        &ast.delegate_entries,
14    );
15
16    let mut output = TokenStream::new();
17
18    for impl_item in impl_items {
19        output.extend(impl_item.to_token_stream());
20    }
21
22    Ok(output)
23}