nan_serve_publish_event/
lib.rs1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4use quote::quote;
5use syn::{parse_macro_input, Ident};
6
7
8#[proc_macro]
9pub fn publish_event(input: TokenStream) -> TokenStream {
10 let instance_name = parse_macro_input!(input as Ident);
11
12 let expanded = quote! {
13 {
14 let type_name = std::any::type_name_of_val(&#instance_name);
15 let name = type_name.split("::").last().unwrap(); let data = bincode::serialize(&#instance_name).unwrap();
17 crate::tokio_event_adapter_runtime::publish_event(name, data);
18 }
19 };
20
21 TokenStream::from(expanded)
22}