labelled_enum_derive/
lib.rs1use 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}