bon_macros/util/
generic_param.rs

1pub(crate) trait GenericParamExt {
2    fn to_generic_argument(&self) -> syn::GenericArgument;
3}
4
5impl GenericParamExt for syn::GenericParam {
6    fn to_generic_argument(&self) -> syn::GenericArgument {
7        match self {
8            Self::Lifetime(param) => syn::GenericArgument::Lifetime(param.lifetime.clone()),
9            Self::Type(param) => {
10                let ident = &param.ident;
11                syn::GenericArgument::Type(syn::parse_quote!(#ident))
12            }
13            Self::Const(param) => {
14                let ident = &param.ident;
15                syn::GenericArgument::Const(syn::parse_quote!(#ident))
16            }
17        }
18    }
19}