actix_web_rest_macros/
lib.rs

1use 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    // Parse args and input tokens into a syntax tree.
17    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    // Parse the input tokens into a syntax tree.
29    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}