| 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 { |
| 8 | fn from_generics(generics: &Generics) -> Result<Self>; |
| 9 | } |
| 10 | |
| 11 | impl FromGenerics for () { |
| 12 | fn from_generics(_generics: &Generics) -> Result<Self> { |
| 13 | Ok(()) |
| 14 | } |
| 15 | } |
| 16 | |
| 17 | impl FromGenerics for Generics { |
| 18 | fn from_generics(generics: &Generics) -> Result<Self> { |
| 19 | Ok(generics.clone()) |
| 20 | } |
| 21 | } |
| 22 | |
| 23 | impl<T: FromGenerics> FromGenerics for Result<T> { |
| 24 | fn from_generics(generics: &Generics) -> Result<Self> { |
| 25 | Ok(FromGenerics::from_generics(generics)) |
| 26 | } |
| 27 | } |
| 28 |
