cgp_component_macro_lib/delegate_components/
delegate.rs1use 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}