1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
extern crate proc_macro; use proc_macro::TokenStream; use syn::{parse_macro_input, DeriveInput}; mod context; use context::ResourceContext; #[proc_macro_derive(Resource, attributes(json_api))] pub fn resource_macro_derive(input: TokenStream) -> TokenStream { impl_resource_macro(parse_macro_input!(input as DeriveInput)) } fn impl_resource_macro(ast: DeriveInput) -> TokenStream { ResourceContext::from(&ast).to_token_stream().into() }