esyn_derive/
lib.rs

1mod attr;
2mod bound;
3mod default;
4mod ders;
5mod ders_enum_named;
6mod ders_enum_unit;
7mod ders_enum_unnamed;
8mod ders_struct_named;
9mod ders_struct_unit;
10mod ders_struct_unnamed;
11mod ser;
12
13use proc_macro2::TokenStream;
14use syn::{parse_macro_input, DeriveInput};
15
16#[proc_macro_derive(EsynDe, attributes(custom_syntax))]
17pub fn derive_de(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
18    let input = parse_macro_input!(input as DeriveInput);
19    let mut res = TokenStream::new();
20
21    res.extend(ders::derive_de(&input).unwrap());
22    res.extend(default::derive_default(&input).unwrap());
23
24    res.into()
25}
26
27#[proc_macro_derive(EsynSer)]
28pub fn derive_ser(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
29    let input = parse_macro_input!(input as DeriveInput);
30    ser::derive_ser(&input).unwrap().into()
31}