]> git.lizzy.rs Git - rust.git/blob - config_proc_macro/src/lib.rs
Add config_proc_macro
[rust.git] / config_proc_macro / src / lib.rs
1 //! This crate provides a derive macro for `ConfigType`.
2
3 #![recursion_limit = "256"]
4
5 extern crate proc_macro;
6
7 mod attrs;
8 mod config_type;
9 mod item_enum;
10 mod item_struct;
11 mod utils;
12
13 use proc_macro::TokenStream;
14 use syn::parse_macro_input;
15
16 #[proc_macro_attribute]
17 pub 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     #[cfg(feature = "debug-with-rustfmt")]
22     {
23         utils::debug_with_rustfmt(&output);
24     }
25
26     TokenStream::from(output)
27 }