tapa_trait_serde_derive/
lib.rs

1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4use quote::quote;
5
6#[proc_macro_derive(IBincodeSerializable)]
7pub fn macro_derive_ibincodeserializable(input: TokenStream) -> TokenStream {
8    let ast = syn::parse(input).unwrap();
9    impl_derive_ibincodeserializable(&ast)
10}
11
12fn impl_derive_ibincodeserializable(ast: &syn::DeriveInput) -> TokenStream {
13    let name = &ast.ident;
14    let gen = quote! {
15        impl IBincodeSerializable for #name {}
16    };
17    gen.into()
18}
19
20#[proc_macro_derive(ICborSerializable)]
21pub fn macro_derive_icborserializable(input: TokenStream) -> TokenStream {
22    let ast = syn::parse(input).unwrap();
23    impl_derive_icborserializable(&ast)
24}
25
26fn impl_derive_icborserializable(ast: &syn::DeriveInput) -> TokenStream {
27    let name = &ast.ident;
28    let gen = quote! {
29        impl ICborSerializable for #name {}
30    };
31    gen.into()
32}
33
34#[proc_macro_derive(IFlexbuffersSerializable)]
35pub fn macro_derive_iflexbuffersserializable(input: TokenStream) -> TokenStream {
36    let ast = syn::parse(input).unwrap();
37    impl_derive_iflexbuffersserializable(&ast)
38}
39
40fn impl_derive_iflexbuffersserializable(ast: &syn::DeriveInput) -> TokenStream {
41    let name = &ast.ident;
42    let gen = quote! {
43        impl IFlexbuffersSerializable for #name {}
44    };
45    gen.into()
46}
47
48#[proc_macro_derive(IJsonSerializable)]
49pub fn macro_derive_ijsonserializable(input: TokenStream) -> TokenStream {
50    let ast = syn::parse(input).unwrap();
51    impl_derive_ijsonserializable(&ast)
52}
53
54fn impl_derive_ijsonserializable(ast: &syn::DeriveInput) -> TokenStream {
55    let name = &ast.ident;
56    let gen = quote! {
57        impl IJsonSerializable for #name {}
58    };
59    gen.into()
60}
61
62#[proc_macro_derive(IMessagePackSerializable)]
63pub fn macro_derive_imessagepackserializable(input: TokenStream) -> TokenStream {
64    let ast = syn::parse(input).unwrap();
65    impl_derive_imessagepackserializable(&ast)
66}
67
68fn impl_derive_imessagepackserializable(ast: &syn::DeriveInput) -> TokenStream {
69    let name = &ast.ident;
70    let gen = quote! {
71        impl IMessagePackSerializable for #name {}
72    };
73    gen.into()
74}
75
76#[proc_macro_derive(IRonSerializable)]
77pub fn macro_derive_ironserializable(input: TokenStream) -> TokenStream {
78    let ast = syn::parse(input).unwrap();
79    impl_derive_ironserializable(&ast)
80}
81
82fn impl_derive_ironserializable(ast: &syn::DeriveInput) -> TokenStream {
83    let name = &ast.ident;
84    let gen = quote! {
85        impl IRonSerializable for #name {}
86    };
87    gen.into()
88}
89
90#[proc_macro_derive(ITomlSerializable)]
91pub fn macro_derive_itomlserializable(input: TokenStream) -> TokenStream {
92    let ast = syn::parse(input).unwrap();
93    impl_derive_itomlserializable(&ast)
94}
95
96fn impl_derive_itomlserializable(ast: &syn::DeriveInput) -> TokenStream {
97    let name = &ast.ident;
98    let gen = quote! {
99        impl ITomlSerializable for #name {}
100    };
101    gen.into()
102}
103
104#[proc_macro_derive(IYamlSerializable)]
105pub fn macro_derive_iyamlserializable(input: TokenStream) -> TokenStream {
106    let ast = syn::parse(input).unwrap();
107    impl_derive_iyamlserializable(&ast)
108}
109
110fn impl_derive_iyamlserializable(ast: &syn::DeriveInput) -> TokenStream {
111    let name = &ast.ident;
112    let gen = quote! {
113        impl IYamlSerializable for #name {}
114    };
115    gen.into()
116}