tapa_trait_serde_derive/
lib.rs1extern 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}