parameterized_macro/
lib.rs

1#[macro_use]
2extern crate syn;
3extern crate proc_macro;
4
5mod attribute;
6mod generation;
7mod tests;
8
9#[proc_macro_attribute]
10pub fn parameterized(
11    args: ::proc_macro::TokenStream,
12    input: ::proc_macro::TokenStream,
13) -> ::proc_macro::TokenStream {
14    impl_macro(args, input)
15}
16
17fn impl_macro(
18    args: ::proc_macro::TokenStream,
19    input: ::proc_macro::TokenStream,
20) -> ::proc_macro::TokenStream {
21    let argument_lists = parse_macro_input!(args as attribute::ParameterizedList);
22    let func = parse_macro_input!(input as attribute::Fn);
23
24    generation::generate(argument_lists, func)
25}