azalea_buf_macros/
lib.rs

1mod read;
2mod write;
3
4use proc_macro::TokenStream;
5use quote::quote;
6use syn::{DeriveInput, parse_macro_input};
7
8#[proc_macro_derive(AzaleaRead, attributes(var))]
9pub fn derive_azalearead(input: TokenStream) -> TokenStream {
10    let DeriveInput { ident, data, .. } = parse_macro_input!(input);
11
12    read::create_impl_azalearead(&ident, &data).into()
13}
14
15#[proc_macro_derive(AzaleaWrite, attributes(var))]
16pub fn derive_azaleawrite(input: TokenStream) -> TokenStream {
17    let DeriveInput { ident, data, .. } = parse_macro_input!(input);
18
19    write::create_impl_azaleawrite(&ident, &data).into()
20}
21
22#[proc_macro_derive(AzBuf, attributes(var, limit))]
23pub fn derive_azbuf(input: TokenStream) -> TokenStream {
24    let DeriveInput { ident, data, .. } = parse_macro_input!(input);
25
26    let writable = write::create_impl_azaleawrite(&ident, &data);
27    let readable = read::create_impl_azalearead(&ident, &data);
28    quote! {
29        #writable
30        #readable
31    }
32    .into()
33}