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}