actix_web_rest_macros/
lib.rs1use args::RestErrorMacroArguments;
2use syn::{parse_macro_input, DeriveInput};
3
4mod args;
5mod attr_rest_error;
6mod derive_rest_error;
7
8use attr_rest_error::*;
9use derive_rest_error::*;
10
11#[proc_macro_attribute]
12pub fn rest_error(
13 args: proc_macro::TokenStream,
14 input: proc_macro::TokenStream,
15) -> proc_macro::TokenStream {
16 let input = parse_macro_input!(input as DeriveInput);
18 let args = parse_macro_input!(args as RestErrorMacroArguments);
19
20 match rest_error_macro(args, input) {
21 Ok(ts) => ts.into(),
22 Err(err) => err.into_compile_error().into(),
23 }
24}
25
26#[proc_macro_derive(RestError, attributes(rest))]
27pub fn derive_rest_error(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
28 let input = parse_macro_input!(input as DeriveInput);
30
31 match derive_rest_error_macro(input) {
32 Ok(ts) => ts.into(),
33 Err(err) => err.into_compile_error().into(),
34 }
35}