extern crate proc_macro; extern crate syn; #[macro_use] extern crate quote; use proc_macro::TokenStream; mod dns_packet_data; mod rrdata; #[proc_macro_derive(DnsPacketData)] pub fn derive_dns_packet_data(input: TokenStream) -> TokenStream { let s = input.to_string(); let ast = syn::parse_derive_input(&s).unwrap(); let gen = dns_packet_data::impl_hello_world(&ast); gen.parse().unwrap() } #[proc_macro_derive(RRData)] pub fn derive_rr_data(input: TokenStream) -> TokenStream { let s = input.to_string(); let ast = syn::parse_derive_input(&s).unwrap(); let gen = rrdata::impl_rr_data(&ast); gen.parse().unwrap() }