cser_derive/
lib.rs

1//! Derive macro for `#[derive(Encodable, Decodable)]`.
2
3#![no_std]
4
5extern crate alloc;
6extern crate proc_macro;
7
8mod de;
9mod en;
10
11use de::*;
12use en::*;
13use proc_macro::TokenStream;
14
15#[proc_macro_derive(Encodable)]
16pub fn encodable(input: TokenStream) -> TokenStream {
17    let ast = syn::parse(input).unwrap();
18    let gen = impl_encodable(&ast);
19    gen.into()
20}
21
22#[proc_macro_derive(EncodableWrapper)]
23pub fn encodable_wrapper(input: TokenStream) -> TokenStream {
24    let ast = syn::parse(input).unwrap();
25    let gen = impl_encodable_wrapper(&ast);
26    gen.into()
27}
28
29#[proc_macro_derive(Decodable)]
30pub fn decodable(input: TokenStream) -> TokenStream {
31    let ast = syn::parse(input).unwrap();
32    let gen = impl_decodable(&ast);
33    gen.into()
34}
35
36#[proc_macro_derive(DecodableWrapper)]
37pub fn decodable_wrapper(input: TokenStream) -> TokenStream {
38    let ast = syn::parse(input).unwrap();
39    let gen = impl_decodable_wrapper(&ast);
40    gen.into()
41}