1 | use syn::TypeParam; |
2 | |
3 | use crate::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 | |