mincat_macro/
lib.rs

1use proc_macro::TokenStream;
2
3mod extract_form;
4mod generics_param;
5mod method_handler;
6mod middleware;
7
8#[proc_macro_derive(Form, attributes(multer))]
9pub fn derive_form(input: TokenStream) -> TokenStream {
10    extract_form::generate(input)
11}
12
13#[proc_macro_attribute]
14pub fn middleware(_: TokenStream, input: TokenStream) -> TokenStream {
15    middleware::generate(input)
16}
17
18#[proc_macro]
19pub fn repeat_macro_max_generics_param(input: TokenStream) -> TokenStream {
20    generics_param::generate(input)
21}
22
23macro_rules! generate_route_attribute {
24    ($name: ident, $method: expr) => {
25        #[proc_macro_attribute]
26        pub fn $name(args: TokenStream, input: TokenStream) -> TokenStream {
27            method_handler::generate($method, args, input)
28        }
29    };
30}
31
32generate_route_attribute!(get, "GET");
33generate_route_attribute!(put, "PUT");
34generate_route_attribute!(post, "POST");
35generate_route_attribute!(delete, "DELETE");
36generate_route_attribute!(head, "HEAD");
37generate_route_attribute!(patch, "PATCH");
38generate_route_attribute!(options, "OPTIONS");