cgp_component_macro_lib/delegate_components/
delegate.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use proc_macro2::TokenStream;
use quote::ToTokens;

use crate::delegate_components::ast::DelegateComponentsAst;
use crate::delegate_components::impl_delegate::impl_delegate_components;

pub fn delegate_components(body: TokenStream) -> syn::Result<TokenStream> {
    let ast: DelegateComponentsAst = syn::parse2(body)?;

    let impl_items = impl_delegate_components(
        &ast.target_type,
        &ast.target_generics,
        &ast.delegate_entries,
    );

    let mut output = TokenStream::new();

    for impl_item in impl_items {
        output.extend(impl_item.to_token_stream());
    }

    Ok(output)
}