relm_derive_state/
lib.rs

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