use syn::TypeParam; use crate::Result; /// Creates an instance by parsing an individual type_param and its attributes. pub trait FromTypeParam: Sized { fn from_type_param(type_param: &TypeParam) -> Result; } impl FromTypeParam for () { fn from_type_param(_: &TypeParam) -> Result { Ok(()) } } impl FromTypeParam for TypeParam { fn from_type_param(type_param: &TypeParam) -> Result { Ok(type_param.clone()) } } impl FromTypeParam for Vec { fn from_type_param(type_param: &TypeParam) -> Result { Ok(type_param.attrs.clone()) } } impl FromTypeParam for syn::Ident { fn from_type_param(type_param: &TypeParam) -> Result { Ok(type_param.ident.clone()) } }