stecs_derive/
lib.rs

1use darling::FromDeriveInput;
2use syn::parse_macro_input;
3
4mod get;
5mod optic;
6mod query;
7mod split;
8
9#[proc_macro_derive(SplitFields, attributes(split))]
10pub fn derive_split_fields(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
11    let input: syn::DeriveInput = syn::parse_macro_input!(input);
12    match split::SplitOpts::from_derive_input(&input) {
13        Ok(input) => input.derive().into(),
14        Err(e) => e.write_errors().into(),
15    }
16}
17
18#[proc_macro]
19pub fn storage_query(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
20    let input = parse_macro_input!(tokens as query::QueryOpts);
21    input.query().into()
22}
23
24#[proc_macro]
25pub fn storage_get(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
26    let input = parse_macro_input!(tokens as get::StorageGetOpts);
27    input.get().into()
28}