arpy_macros/lib.rs
1use heck::ToKebabCase;
2use proc_macro::TokenStream;
3use quote::quote;
4use syn::{parse_macro_input, DeriveInput};
5
6#[proc_macro_derive(MsgId)]
7pub fn derive_msg_id(item: TokenStream) -> TokenStream {
8 let item: DeriveInput = parse_macro_input!(item);
9 let ident = item.ident;
10 let id = ident.to_string().to_kebab_case();
11
12 quote!(
13 impl ::arpy::protocol::MsgId for #ident {
14 const ID: &'static str = #id;
15 }
16 )
17 .into()
18}