1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#![recursion_limit="256"] extern crate proc_macro; extern crate relm_derive_common; extern crate syn; use proc_macro::TokenStream; use relm_derive_common::{impl_msg, impl_simple_msg}; use syn::{Ident, Item, parse}; use syn::spanned::Spanned; #[proc_macro_derive(SimpleMsg)] pub fn simple_msg(input: TokenStream) -> TokenStream { let ast: Item = parse(input).expect("simple_msg > parse failed"); let gen = impl_simple_msg(&ast, Ident::new("relm_state", ast.span())); gen.into() } #[proc_macro_derive(Msg)] pub fn msg(input: TokenStream) -> TokenStream { let ast: Item = parse(input).expect("msg > parse failed"); let gen = impl_msg(&ast, Ident::new("relm_state", ast.span())); gen.into() }