labelled_enum_derive/
lib.rs

1use proc_macro::TokenStream;
2use syn::DeriveInput;
3
4extern crate proc_macro;
5
6mod attr;
7mod from_str;
8mod rename;
9mod to_string;
10mod util;
11
12#[proc_macro_derive(ToString, attributes(label))]
13pub fn to_string(input: TokenStream) -> TokenStream {
14    let ast = syn::parse_macro_input!(input as DeriveInput);
15
16    let result = to_string::impl_to_string(ast);
17    match result {
18        Ok(gen) => proc_macro::TokenStream::from(gen),
19        Err(err) => panic!("{}", err),
20    }
21}
22
23#[proc_macro_derive(FromStr, attributes(label))]
24pub fn from_str(input: TokenStream) -> TokenStream {
25    let ast = syn::parse_macro_input!(input as DeriveInput);
26
27    let result = from_str::impl_from_str(ast);
28    match result {
29        Ok(gen) => proc_macro::TokenStream::from(gen),
30        Err(err) => panic!("{}", err),
31    }
32}