relm-derive-state 0.16.0

Custom derive required by the relm-state crate.
Documentation
#![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()
}