ichika_macros/
lib.rs

1mod template;
2mod tools;
3
4use proc_macro::TokenStream;
5use quote::quote;
6use syn::parse_macro_input;
7
8use template::{generate_closures, rewrite_names};
9use tools::PipeMacros;
10
11#[proc_macro]
12pub fn pipe(input: TokenStream) -> TokenStream {
13    let input = parse_macro_input!(input as PipeMacros);
14    let input = rewrite_names(input)
15        .expect("Failed to rewrite names. Please check the error message above.");
16
17    let closure_impl_list = generate_closures(input.clone()).expect(
18        "Failed to generate closure implementation list. Please check the error message above.",
19    );
20    let pool_decl = template::generate_pool(input)
21        .expect("Failed to generate pool declaration. Please check the error message above.");
22
23    quote! {
24        {
25            #closure_impl_list
26
27            #pool_decl
28
29            _Pool::new()
30        }
31    }
32    .into()
33}