qualifier_attr 0.2.2

Procedural macro attributes for adding "qualifiers" (pub, async, unsafe, const, extern "C", ...) to various items.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use quote::ToTokens;
use syn::parse::{Parse, ParseStream};
use proc_macro as pm;

struct ModQualifiers(syn::Visibility);

impl Parse for ModQualifiers {
    fn parse(input: ParseStream) -> syn::Result<Self> {
        Ok(ModQualifiers(input.parse()?))
    }
}

pub(crate) fn mod_qualifiers(meta: pm::TokenStream, item: pm::TokenStream) -> pm::TokenStream {
    let meta = syn::parse_macro_input!(meta as ModQualifiers);
    let mut item = syn::parse_macro_input!(item as syn::ItemMod);
    item.vis = meta.0;
    item.to_token_stream().into()
}