shizen_macros/
lib.rs

1mod ast;
2mod attr;
3mod bindings;
4mod utils;
5
6use proc_macro::TokenStream;
7use syn::{parse_macro_input, Error, ItemFn};
8
9#[proc_macro_attribute]
10pub fn plugin(args: TokenStream, input: TokenStream) -> TokenStream {
11    let parsed_args = parse_macro_input!(args as ast::PluginArgs);
12    let parsed_input = parse_macro_input!(input as ItemFn);
13
14    attr::plugin_impl(parsed_args, parsed_input)
15        .unwrap_or_else(Error::into_compile_error)
16        .into()
17}