| 1 | use syn::Variant; |
|---|---|
| 2 | |
| 3 | use crate::Result; |
| 4 | |
| 5 | /// Creates an instance from a specified `syn::Variant`. |
| 6 | pub trait FromVariant: Sized { |
| 7 | /// Create an instance from `syn::Variant`, or return an error. |
| 8 | fn from_variant(variant: &Variant) -> Result<Self>; |
| 9 | } |
| 10 | |
| 11 | impl FromVariant for () { |
| 12 | fn from_variant(_: &Variant) -> Result<Self> { |
| 13 | Ok(()) |
| 14 | } |
| 15 | } |
| 16 | |
| 17 | impl FromVariant for Variant { |
| 18 | fn from_variant(variant: &Variant) -> Result<Self> { |
| 19 | Ok(variant.clone()) |
| 20 | } |
| 21 | } |
| 22 | |
| 23 | impl FromVariant for syn::Ident { |
| 24 | fn from_variant(variant: &Variant) -> Result<Self> { |
| 25 | Ok(variant.ident.clone()) |
| 26 | } |
| 27 | } |
| 28 | |
| 29 | impl FromVariant for Vec<syn::Attribute> { |
| 30 | fn from_variant(variant: &Variant) -> Result<Self> { |
| 31 | Ok(variant.attrs.clone()) |
| 32 | } |
| 33 | } |
| 34 |
