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 syn::parse::{Parse, ParseStream};
use proc_macro as pm;
use quote::ToTokens;

struct StructQualifier(syn::Visibility);

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

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