1 use crate::Result; 2 3 /// Creates an instance by parsing a specific `syn::GenericParam`. 4 /// This can be a type param, a lifetime, or a const param. 5 pub trait FromGenericParam: Sized { from_generic_param(param: &syn::GenericParam) -> Result<Self>6 fn from_generic_param(param: &syn::GenericParam) -> Result<Self>; 7 } 8 9 impl FromGenericParam for () { from_generic_param(_param: &syn::GenericParam) -> Result<Self>10 fn from_generic_param(_param: &syn::GenericParam) -> Result<Self> { 11 Ok(()) 12 } 13 } 14 15 impl FromGenericParam for syn::GenericParam { from_generic_param(param: &syn::GenericParam) -> Result<Self>16 fn from_generic_param(param: &syn::GenericParam) -> Result<Self> { 17 Ok(param.clone()) 18 } 19 } 20