edn_derive/
lib.rs

1use proc_macro::TokenStream;
2use syn::{parse_macro_input, DeriveInput};
3
4mod deserialize;
5mod edn;
6mod enums;
7mod serialize;
8mod structs;
9
10#[proc_macro_derive(Serialize)]
11pub fn derive_serialize(input: TokenStream) -> TokenStream {
12    let input = parse_macro_input!(input as DeriveInput);
13
14    let type_name = input.ident;
15
16    serialize::expand(&type_name, &input.data)
17        .unwrap_or_else(|e| e.to_compile_error())
18        .into()
19}
20
21#[proc_macro_derive(Deserialize)]
22pub fn derive_deserialize(input: TokenStream) -> TokenStream {
23    let input = parse_macro_input!(input as DeriveInput);
24
25    let type_name = input.ident;
26
27    deserialize::expand(&type_name, &input.data)
28        .unwrap_or_else(|e| e.to_compile_error())
29        .into()
30}