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}