mlua-gen-macros 0.2.2

Generates code to easily use Rust's structs or enums in Lua with mlua
Documentation
use {
    proc_macro2::TokenStream as TokenStream2,
    quote::quote,
    syn::{punctuated::Punctuated, Generics},
};

pub(crate) fn remove_ty_from_generics(generics: &Generics) -> TokenStream2 {
    let non_typed_generics_vec = generics
        .params
        .iter()
        .filter_map(|generic| {
            match generic {
                syn::GenericParam::Type(ty) => {
                    let mut mut_ty = ty.to_owned();

                    mut_ty.colon_token = None;
                    mut_ty.bounds = Punctuated::new();
                    mut_ty.eq_token = None;
                    mut_ty.default = None;

                    Some(syn::GenericParam::Type(mut_ty))
                },
                syn::GenericParam::Const(_) => None,
                syn::GenericParam::Lifetime(_) => Some(generic.to_owned()),
            }
        })
        .collect::<Vec<_>>();

    match non_typed_generics_vec.as_slice() {
        &[] => quote!(),
        _ => quote!(<#(#non_typed_generics_vec),*>),
    }
}