blob: d4dd5f2ac948b7822e6b67e1c0d287a584698da8 [file] [log] [blame]
use syn::{self, Variant};
use Result;
/// Creates an instance from a specified `syn::Variant`.
pub trait FromVariant: Sized {
/// Create an instance from `syn::Variant`, or return an error.
fn from_variant(variant: &Variant) -> Result<Self>;
}
impl FromVariant for () {
fn from_variant(_: &Variant) -> Result<Self> {
Ok(())
}
}
impl FromVariant for Variant {
fn from_variant(variant: &Variant) -> Result<Self> {
Ok(variant.clone())
}
}
impl FromVariant for syn::Ident {
fn from_variant(variant: &Variant) -> Result<Self> {
Ok(variant.ident.clone())
}
}
impl FromVariant for Vec<syn::Attribute> {
fn from_variant(variant: &Variant) -> Result<Self> {
Ok(variant.attrs.clone())
}
}