1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
use proc_macro2::TokenStream;

use quote::quote;

#[proc_macro_attribute]
pub fn message(
    _metadata: proc_macro::TokenStream,
    input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
    let def: TokenStream = input.into();

    let expanded = quote! {
        #[derive(Clone, Debug, Serialize, Deserialize)]
        #def
    };

    expanded.into()
}