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}