• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use syn::Generics;
2 
3 use crate::Result;
4 
5 /// Creates an instance by parsing an entire generics declaration, including the
6 /// `where` clause.
7 pub trait FromGenerics: Sized {
from_generics(generics: &Generics) -> Result<Self>8     fn from_generics(generics: &Generics) -> Result<Self>;
9 }
10 
11 impl FromGenerics for () {
from_generics(_generics: &Generics) -> Result<Self>12     fn from_generics(_generics: &Generics) -> Result<Self> {
13         Ok(())
14     }
15 }
16 
17 impl FromGenerics for Generics {
from_generics(generics: &Generics) -> Result<Self>18     fn from_generics(generics: &Generics) -> Result<Self> {
19         Ok(generics.clone())
20     }
21 }
22 
23 impl<T: FromGenerics> FromGenerics for Result<T> {
from_generics(generics: &Generics) -> Result<Self>24     fn from_generics(generics: &Generics) -> Result<Self> {
25         Ok(FromGenerics::from_generics(generics))
26     }
27 }
28