#Getting value of arg in derive macro

7 messages · Page 1 of 1 (latest)

fickle vessel
#

Hello! I need to get value of arg in syn but couldnt find the solution

#
#[proc_macro_derive(kanu, attributes(kanu))]
pub fn kanu_derive(input: TokenStream) -> TokenStream {
    let input = parse_macro_input!(input as DeriveInput);
    let name = input.ident;
    let data = input.data;

    let mut table = String::new();
    let mut migrate = false;

    for attr in &input.attrs {
        if attr.path().is_ident("kanu") {
            attr.parse_nested_meta(|meta| {
                if meta.path.is_ident("migrate") {
                    migrate = true
                }

                if meta.path.is_ident("table") {
                    // How to get value of this?
 // #[kanu(table="User")] This is how it looks like
                }

                return Ok(());
            });
        }
    }

    if let syn::Data::Struct(data) = data {
        match &data.fields {
            Fields::Named(named) => for field in named.named.clone() {
                for attr in field.attrs {
                    if attr.path().is_ident("kanu") {
                        attr.parse_nested_meta(|meta| {

                            Ok(())
                        });
                    }
                }
            },
            _ => {}
        }
    }

    // Code
}
jolly storm
#

then parse that ParseStream into a LitStr

fickle vessel
jolly storm