parameterized_macro/
lib.rs

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