Skip to main content

wide_log_macros/
lib.rs

1use proc_macro2::{Span, TokenStream as TokenStream2};
2
3mod codegen;
4mod parse;
5
6#[proc_macro]
7pub fn wide_log(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
8    let input2 = TokenStream2::from(input);
9    let (overrides, node) = match parse::parse_wide_log_input(&input2) {
10        Ok((o, n)) => (o, n),
11        Err(e) => {
12            return syn::Error::new(Span::call_site(), e)
13                .to_compile_error()
14                .into();
15        }
16    };
17    let tokio = cfg!(feature = "tokio");
18    let uuid = cfg!(feature = "uuid");
19    let tracing = cfg!(feature = "tracing");
20    match codegen::generate(node, overrides, tokio, uuid, tracing) {
21        Ok(ts) => ts.into(),
22        Err(e) => e.to_compile_error().into(),
23    }
24}