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 {
11        ident,
12        generics,
13        data,
14        ..
15    } = parse_macro_input!(input);
16
17    read::create_impl_azalearead(&ident, &generics, &data).into()
18}
19
20#[proc_macro_derive(AzaleaWrite, attributes(var))]
21pub fn derive_azaleawrite(input: TokenStream) -> TokenStream {
22    let DeriveInput {
23        ident,
24        generics,
25        data,
26        ..
27    } = parse_macro_input!(input);
28
29    write::create_impl_azaleawrite(&ident, &generics, &data).into()
30}
31
32#[proc_macro_derive(AzBuf, attributes(var, limit))]
33pub fn derive_azbuf(input: TokenStream) -> TokenStream {
34    let DeriveInput {
35        ident,
36        generics,
37        data,
38        ..
39    } = parse_macro_input!(input);
40
41    let writable = write::create_impl_azaleawrite(&ident, &generics, &data);
42    let readable = read::create_impl_azalearead(&ident, &generics, &data);
43    quote! {
44        #writable
45        #readable
46    }
47    .into()
48}