use syn::Generics; use crate::Result; /// Creates an instance by parsing an entire generics declaration, including the /// `where` clause. pub trait FromGenerics: Sized { fn from_generics(generics: &Generics) -> Result; } impl FromGenerics for () { fn from_generics(_generics: &Generics) -> Result { Ok(()) } } impl FromGenerics for Generics { fn from_generics(generics: &Generics) -> Result { Ok(generics.clone()) } } impl FromGenerics for Result { fn from_generics(generics: &Generics) -> Result { Ok(FromGenerics::from_generics(generics)) } }