tlkit_proc/
lib.rs

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}