busan_derive/
lib.rs

1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4use quote::quote;
5use syn::{parse_macro_input, DeriveInput};
6
7#[proc_macro_derive(Message)]
8pub fn message(input: TokenStream) -> TokenStream {
9    let ast = parse_macro_input!(input as DeriveInput);
10    let name = &ast.ident;
11
12    let expanded = quote! {
13        impl ::busan::message::Message for #name {
14            fn as_any(&self) -> &dyn ::std::any::Any {
15                self
16            }
17        }
18    };
19
20    proc_macro::TokenStream::from(expanded)
21}