1use proc_macro::TokenStream;
2use syn::{parse_macro_input, DeriveInput};
3
4#[proc_macro_derive(TryFromPrimite)]
5pub fn derive_try_from_primite(input: TokenStream) -> TokenStream {
6 let input = parse_macro_input!(input as DeriveInput);
7 tlkit_expand::enumer::try_from::expand(input)
8 .unwrap_or_else(|err| err.into_compile_error())
9 .into()
10}
11
12#[proc_macro_derive(EnumGetter, attributes(props, values))]
13pub fn derive_enum_getter(input: TokenStream) -> TokenStream {
14 let input = parse_macro_input!(input as DeriveInput);
15 tlkit_expand::enumer::getter::expand(input)
16 .unwrap_or_else(|err| err.into_compile_error())
17 .into()
18}
19
20#[proc_macro_derive(Convert, attributes(from, into))]
21pub fn derive_struct_convert(input: TokenStream) -> TokenStream {
22 let input = parse_macro_input!(input as DeriveInput);
23 tlkit_expand::structure::convert::expand(input)
24 .unwrap_or_else(|err| err.into_compile_error())
25 .into()
26}
27
28#[proc_macro_derive(Merge, attributes(pull, push))]
29pub fn derive_struct_merge(input: TokenStream) -> TokenStream {
30 let input = parse_macro_input!(input as DeriveInput);
31 tlkit_expand::structure::merge::expand(input)
32 .unwrap_or_else(|err| err.into_compile_error())
33 .into()
34}