1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#![recursion_limit = "128"] extern crate proc_macro; mod ast; mod escape; mod generate; mod parse; #[proc_macro] pub fn define(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream { let structs = syn::parse_macro_input!(tokens as parse::Many<ast::Struct>).0; quote::quote!( #(#structs)* ).into() } #[proc_macro] pub fn render(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream { let template = syn::parse_macro_input!(tokens as ast::Template); quote::quote!( #template ).into() }