1 use syn::{self, TypeParam};
2 
3 use Result;
4 
5 /// Creates an instance by parsing an individual type_param and its attributes.
6 pub trait FromTypeParam: Sized {
7     fn from_type_param(type_param: &TypeParam) -> Result<Self>;
8 }
9 
10 impl FromTypeParam for () {
11     fn from_type_param(_: &TypeParam) -> Result<Self> {
12         Ok(())
13     }
14 }
15 
16 impl FromTypeParam for TypeParam {
17     fn from_type_param(type_param: &TypeParam) -> Result<Self> {
18         Ok(type_param.clone())
19     }
20 }
21 
22 impl FromTypeParam for Vec<syn::Attribute> {
23     fn from_type_param(type_param: &TypeParam) -> Result<Self> {
24         Ok(type_param.attrs.clone())
25     }
26 }
27 
28 impl FromTypeParam for syn::Ident {
29     fn from_type_param(type_param: &TypeParam) -> Result<Self> {
30         Ok(type_param.ident.clone())
31     }
32 }
33