feature_scope_macros/lib.rs
1mod parser;
2
3use proc_macro::TokenStream;
4use quote::quote;
5use syn::parse_macro_input;
6
7#[proc_macro_attribute]
8pub fn feature_scope(attr: TokenStream, input: TokenStream) -> TokenStream {
9 let input = proc_macro2::TokenStream::from(input);
10 let attr = parse_macro_input!(attr as parser::FeatureScope);
11
12 let parser::FeatureScope { ident } = attr;
13 quote! {
14 #[allow(unexpected_cfgs)]
15 #[cfg(#ident)]
16 #input
17 }
18 .into()
19}