hitori_macros/
lib.rs

1mod expand;
2mod parse;
3mod utils;
4
5use proc_macro::TokenStream;
6use syn::Error;
7
8fn parse_expand(is_mut: bool, attr: TokenStream, item: TokenStream) -> TokenStream {
9    let output = parse::parse(is_mut, attr.into(), item.into())
10        .and_then(expand::expand)
11        .unwrap_or_else(Error::into_compile_error);
12    #[cfg(feature = "debug")]
13    utils::debug(output.clone()).unwrap();
14    output.into()
15}
16
17#[proc_macro_attribute]
18pub fn impl_expr(attr: TokenStream, item: TokenStream) -> TokenStream {
19    parse_expand(false, attr, item)
20}
21
22#[proc_macro_attribute]
23pub fn impl_expr_mut(attr: TokenStream, item: TokenStream) -> TokenStream {
24    parse_expand(true, attr, item)
25}