binary_options_tools_macros/
lib.rsmod deserialize;
mod serialize;
mod timeout;
use proc_macro::TokenStream;
use quote::quote;
use syn::parse_macro_input;
use deserialize::Deserializer;
use serialize::Serializer;
use timeout::{TimeoutArgs, TimeoutBody, Timeout};
#[proc_macro]
pub fn deserialize(input: TokenStream) -> TokenStream {
let d = parse_macro_input!(input as Deserializer);
quote! { #d }.into()
}
#[proc_macro]
pub fn serialize(input: TokenStream) -> TokenStream {
let s = parse_macro_input!(input as Serializer);
quote! { #s }.into()
}
#[proc_macro_attribute]
pub fn timeout(attr: TokenStream, item: TokenStream) -> TokenStream {
let args = parse_macro_input!(attr as TimeoutArgs);
let body = parse_macro_input!(item as TimeoutBody);
let timeout = Timeout::new(body, args);
let q = quote! { #timeout };
q.into()
}