Skip to main content

voidmc_codec_macros/
lib.rs

1use proc_macro::TokenStream;
2use syn::{parse_macro_input, DeriveInput};
3
4mod attrs;
5mod decode;
6mod encode;
7
8#[proc_macro_derive(Encode, attributes(codec))]
9pub fn derive_encode(input: TokenStream) -> TokenStream {
10    let input = parse_macro_input!(input as DeriveInput);
11    encode::derive_encode(&input)
12        .unwrap_or_else(|err| err.to_compile_error())
13        .into()
14}
15
16#[proc_macro_derive(Decode, attributes(codec))]
17pub fn derive_decode(input: TokenStream) -> TokenStream {
18    let input = parse_macro_input!(input as DeriveInput);
19    decode::derive_decode(&input)
20        .unwrap_or_else(|err| err.to_compile_error())
21        .into()
22}