dce-macro 1.8.0

The macros for the dce-router lib
Documentation
mod funcs;
mod router;

use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, ItemFn};
use router::Api;
use funcs::DceError;

#[proc_macro_attribute]
pub fn api(args: TokenStream, input: TokenStream) -> TokenStream {
    let api = parse_macro_input!(args as Api);
    let input = parse_macro_input!(input as ItemFn);
    api.processing(input).into()
}


#[proc_macro]
pub fn pub_msg(args: TokenStream) -> TokenStream {
    let err = parse_macro_input!(args as DceError);
    let call = err.gen_func(true);
    quote!(#call).into()
}

#[proc_macro]
pub fn priv_msg(args: TokenStream) -> TokenStream {
    let err = parse_macro_input!(args as DceError);
    let call = err.gen_func(false);
    quote!(#call).into()
}

#[proc_macro]
pub fn err_pub_msg(args: TokenStream) -> TokenStream {
    let err = parse_macro_input!(args as DceError);
    let call = err.gen_func(true);
    quote!(Err(#call)).into()
}

#[proc_macro]
pub fn err_priv_msg(args: TokenStream) -> TokenStream {
    let err = parse_macro_input!(args as DceError);
    let call = err.gen_func(false);
    quote!(Err(#call)).into()
}