blob: e71daf112e2ff189202409d02bd00d3f5a9a3932 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
mod read;
mod write;
use proc_macro::TokenStream;
use quote::quote;
use syn::{DeriveInput, parse_macro_input};
#[proc_macro_derive(AzBuf, attributes(var, limit))]
pub fn derive_azbuf(input: TokenStream) -> TokenStream {
let DeriveInput {
ident,
generics,
data,
..
} = parse_macro_input!(input);
let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
let writable = write::create_fn_azalea_write(&data);
let readable = read::create_fn_azalea_read(&data);
quote! {
impl #impl_generics azalea_buf::AzBuf for #ident #ty_generics #where_clause {
#writable
#readable
}
}
.into()
}
|