field-visibility 0.1.0

Attribute to specify the visibility of all fields in a Rust struct
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, Visibility};

pub(crate) fn visibility_impl(args: TokenStream, item: TokenStream) -> TokenStream {
    let mut input = parse_macro_input!(item as syn::ItemStruct);
    let visibility = parse_macro_input!(args as syn::Visibility);

    input.fields.iter_mut().for_each(|f| {
        if matches!(f.vis, Visibility::Inherited) {
            f.vis = visibility.clone();
        }
    });
    quote!(#input).into()
}