fusen_proc_macro/
lib.rs

1use fusen_decl_macro::fusen_attr;
2use proc_macro::TokenStream;
3use quote::ToTokens;
4use syn::parse::Parser;
5mod builder;
6mod config;
7mod handler;
8
9#[proc_macro_attribute]
10pub fn builder(_attr: TokenStream, item: TokenStream) -> TokenStream {
11    builder::builder(item)
12}
13
14#[proc_macro_attribute]
15pub fn hot_config(_attr: TokenStream, item: TokenStream) -> TokenStream {
16    config::hot_config(item)
17}
18
19
20#[proc_macro_attribute]
21pub fn handler(attr: TokenStream, item: TokenStream) -> TokenStream {
22    let attr = HandlerAttr::from_attr(attr);
23    match attr {
24        Ok(attr) => handler::fusen_handler(attr, item),
25        Err(err) => err.into_compile_error().into(),
26    }
27}
28
29fusen_attr! {
30    HandlerAttr,
31    id
32}