bon_macros/util/
generic_param.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
pub(crate) trait GenericParamExt {
    fn to_generic_argument(&self) -> syn::GenericArgument;
}

impl GenericParamExt for syn::GenericParam {
    fn to_generic_argument(&self) -> syn::GenericArgument {
        match self {
            Self::Lifetime(param) => syn::GenericArgument::Lifetime(param.lifetime.clone()),
            Self::Type(param) => {
                let ident = &param.ident;
                syn::GenericArgument::Type(syn::parse_quote!(#ident))
            }
            Self::Const(param) => {
                let ident = &param.ident;
                syn::GenericArgument::Const(syn::parse_quote!(#ident))
            }
        }
    }
}