parameterized_macro/
lib.rs1#[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}