rustfmt_config_proc_macro/
lib.rs

1//! This crate provides a derive macro for `ConfigType`.
2
3#![recursion_limit = "256"]
4
5extern crate proc_macro;
6
7mod attrs;
8mod config_type;
9mod item_enum;
10mod item_struct;
11mod utils;
12
13use proc_macro::TokenStream;
14use syn::parse_macro_input;
15
16#[proc_macro_attribute]
17pub fn config_type(_args: TokenStream, input: TokenStream) -> TokenStream {
18    let input = parse_macro_input!(input as syn::Item);
19    let output = config_type::define_config_type(&input);
20
21    if std::env::var("RUSTFMT_DEV_DEBUG_PROC_MACRO").is_ok() {
22        utils::debug_with_rustfmt(&output);
23    }
24
25    TokenStream::from(output)
26}