xconstants_macros/
lib.rs

1use syn::{parse_macro_input, spanned::Spanned};
2
3mod constants;
4mod utils;
5
6#[proc_macro_attribute]
7pub fn constants(
8    attr: proc_macro::TokenStream,
9    item: proc_macro::TokenStream,
10) -> proc_macro::TokenStream {
11    let attr = proc_macro2::TokenStream::from(attr);
12    if !attr.is_empty() {
13        return syn::Error::new(
14            attr.span(),
15            "The constants macro does not expect any arguments.",
16        )
17        .to_compile_error()
18        .into();
19    }
20    // let item = proc_macro2::TokenStream::from(item);
21    let parsed = parse_macro_input!(item as constants::ConstantsInput);
22    let output: proc_macro2::TokenStream = constants::process(parsed);
23
24    output.into()
25}