hrpc_proc_macro/
lib.rs

1//! Utility proc macros for `hrpc`.
2#![deny(missing_docs)]
3
4use proc_macro::{Delimiter, Group, Ident, Punct, Span, TokenStream, TokenTree};
5
6/// An attribute macro that turns an `async fn` into a hRPC handler function.
7///
8/// You should import either `hrpc::server::prelude` or `hrpc::make_handler` to be able to
9/// use this macro properly.
10#[proc_macro_attribute]
11pub fn handler(_args: TokenStream, input: TokenStream) -> TokenStream {
12    TokenStream::from_iter([
13        TokenTree::Ident(Ident::new("make_handler", Span::mixed_site())),
14        TokenTree::Punct(Punct::new('!', proc_macro::Spacing::Joint)),
15        TokenTree::Group(Group::new(Delimiter::Brace, input)),
16    ])
17}