1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#![recursion_limit="1024"] extern crate proc_macro; extern crate syn; #[macro_use] extern crate quote; extern crate case; mod command; use proc_macro::TokenStream; use command::Command; #[proc_macro_derive(Command, attributes(command))] pub fn derive_command(input: TokenStream) -> TokenStream { let source = input.to_string(); let ast = syn::parse_macro_input(&source).unwrap(); Command::new(ast).derive().parse().unwrap() }