Skip to main content

struct_to_enum/
lib.rs

1mod common;
2mod field_name;
3mod field_type;
4
5use field_name::DeriveFieldName;
6use field_type::DeriveFieldType;
7use proc_macro::TokenStream;
8use syn::DeriveInput;
9
10#[proc_macro_derive(
11    FieldType,
12    attributes(
13        stem_type,
14        ste_type,
15        stem_type_derive,
16        ste_type_derive,
17        stem_type_attr,
18        ste_type_attr,
19    )
20)]
21pub fn field_type(input: TokenStream) -> TokenStream {
22    let input = syn::parse_macro_input!(input as DeriveInput);
23    DeriveFieldType::new(input)
24        .and_then(|d| d.expand())
25        .unwrap_or_else(|e| e.to_compile_error())
26        .into()
27}
28
29#[proc_macro_derive(
30    FieldName,
31    attributes(
32        stem_name,
33        ste_name,
34        stem_name_derive,
35        ste_name_derive,
36        stem_name_attr,
37        ste_name_attr,
38    )
39)]
40pub fn field_name(input: TokenStream) -> TokenStream {
41    let input = syn::parse_macro_input!(input as DeriveInput);
42    DeriveFieldName::new(input)
43        .and_then(|d| d.expand())
44        .unwrap_or_else(|e| e.to_compile_error())
45        .into()
46}