1extern crate proc_macro;
2extern crate syn;
3#[macro_use]
4extern crate quote;
5
6mod utils;
7mod decode;
8mod encode;
9
10use {
11 decode::impl_decode_macro,
12 encode::impl_encode_macro,
13 syn::{parse_macro_input, DeriveInput},
14};
15
16
17
18#[proc_macro_derive(Encode)]
19pub fn encode_macro_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
20 let ast = parse_macro_input!(input as DeriveInput);
21 let output = impl_encode_macro(&ast);
22 proc_macro::TokenStream::from(output)
23}
24
25#[proc_macro_derive(Decode)]
26pub fn decode_macro_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
27 let ast = parse_macro_input!(input as DeriveInput);
28 let output = impl_decode_macro(&ast);
29 proc_macro::TokenStream::from(output)
30}