[−][src]Trait structural::enums::IsVariant
Queries whether an enum is some variant (the V type parameter)
Example bounds: IsVariant<TS!(Foo)>,IsVariant<TS!(Bar)>.
Safety
An implementation of IsVariant<TS!(Foo)>
must only return true if the enum is the Foo variant
(Foo is just an example,it applies to all variants).
Undefined behavior will happen if this trait return true,
while the accessor for a field of that variant returns None.
Example
use structural::enums::IsVariant; use structural::{TS,Structural,fp}; assertions(Enum::Foo, Enum::Bar(0), Enum::Boom{x:0,y:false}); assertions(Enum2::Foo, Enum2::Bar, Enum2::Boom); fn assertions<T>(foo:T, bar:T, boom:T) where T: IsVariant<TS!(Foo)> + IsVariant<TS!(Bar)> + IsVariant<TS!(Boom)> { assert_eq!( foo.is_variant_(fp!(Foo)), true ); assert_eq!( foo.is_variant_(fp!(Bar)), false ); assert_eq!( foo.is_variant_(fp!(Boom)), false ); assert_eq!( bar.is_variant_(fp!(Foo)), false ); assert_eq!( bar.is_variant_(fp!(Bar)), true ); assert_eq!( bar.is_variant_(fp!(Boom)), false ); assert_eq!( boom.is_variant_(fp!(Foo)), false ); assert_eq!( boom.is_variant_(fp!(Bar)), false ); assert_eq!( boom.is_variant_(fp!(Boom)), true ); } #[derive(Structural)] enum Enum{ Foo, Bar(u8), Boom{x:u32,y:bool}, } #[derive(Structural)] enum Enum2{ Foo, Bar, Boom, }
Required methods
fn is_variant_(&self, variant: V) -> bool
Checks whether this enum is the variant that V stands for.
Implementations on Foreign Types
impl<T> IsVariant<TStr<__TS<(__S, __o, __m, __e)>>> for Option<T>[src]
impl<T> IsVariant<TStr<__TS<(__N, __o, __n, __e)>>> for Option<T>[src]
impl<T, E> IsVariant<TStr<__TS<(__O, __k)>>> for Result<T, E>[src]
impl<T, E> IsVariant<TStr<__TS<(__E, __r, __r)>>> for Result<T, E>[src]
impl<T, __V> IsVariant<TStr<__V>> for ManuallyDrop<T> where
T: IsVariant<TStr<__V>>, [src]
T: IsVariant<TStr<__V>>,
fn is_variant_(&self, name: TStr<__V>) -> bool[src]
impl<P, __V> IsVariant<TStr<__V>> for Pin<P> where
P::Target: IsVariant<TStr<__V>>,
P: Deref,
P::Target: Sized, [src]
P::Target: IsVariant<TStr<__V>>,
P: Deref,
P::Target: Sized,
fn is_variant_(&self, name: TStr<__V>) -> bool[src]
impl<T, __V> IsVariant<TStr<__V>> for Arc<T> where
T: IsVariant<TStr<__V>>,
T: ?Sized, [src]
T: IsVariant<TStr<__V>>,
T: ?Sized,
fn is_variant_(&self, name: TStr<__V>) -> bool[src]
impl<T, __V> IsVariant<TStr<__V>> for Rc<T> where
T: IsVariant<TStr<__V>>,
T: ?Sized, [src]
T: IsVariant<TStr<__V>>,
T: ?Sized,
fn is_variant_(&self, name: TStr<__V>) -> bool[src]
impl<T, __V> IsVariant<TStr<__V>> for Box<T> where
T: IsVariant<TStr<__V>>,
T: ?Sized, [src]
T: IsVariant<TStr<__V>>,
T: ?Sized,
fn is_variant_(&self, name: TStr<__V>) -> bool[src]
impl<'a, T, __V> IsVariant<TStr<__V>> for &'a T where
T: IsVariant<TStr<__V>>,
T: ?Sized, [src]
T: IsVariant<TStr<__V>>,
T: ?Sized,
fn is_variant_(&self, name: TStr<__V>) -> bool[src]
impl<'a, T, __V> IsVariant<TStr<__V>> for &'a mut T where
T: IsVariant<TStr<__V>>,
T: 'a + ?Sized, [src]
T: IsVariant<TStr<__V>>,
T: 'a + ?Sized,
fn is_variant_(&self, name: TStr<__V>) -> bool[src]
Implementors
impl IsVariant<TStr<__TS<(__0xE7, __0x94, __0x9F, __0xE8, __0x8F, __0x9C)>>> for Vegetable[src]
fn is_variant_(
&self,
_: TStr<__TS<(__0xE7, __0x94, __0x9F, __0xE8, __0x8F, __0x9C)>>
) -> bool[src]
&self,
_: TStr<__TS<(__0xE7, __0x94, __0x9F, __0xE8, __0x8F, __0x9C)>>
) -> bool
impl IsVariant<TStr<__TS<(__B, __a, __r)>>> for Enum2[src]
impl IsVariant<TStr<__TS<(__B, __a, __r)>>> for Enum3[src]
impl IsVariant<TStr<__TS<(__B, __a, __r)>>> for Enum4[src]
impl IsVariant<TStr<__TS<(__B, __a, __r)>>> for Variants[src]
impl IsVariant<TStr<__TS<(__B, __a, __r)>>> for WithBar[src]
impl IsVariant<TStr<__TS<(__B, __a, __z)>>> for Enum3[src]
impl IsVariant<TStr<__TS<(__B, __a, __z)>>> for Enum4[src]
impl IsVariant<TStr<__TS<(__B, __a, __z)>>> for Variants[src]
impl IsVariant<TStr<__TS<(__B, __o, __o, __m)>>> for Bomb[src]
impl IsVariant<TStr<__TS<(__B, __o, __o, __m)>>> for Variants[src]
impl IsVariant<TStr<__TS<(__B, __o, __o, __m)>>> for WithBoom[src]
impl IsVariant<TStr<__TS<(__E, __x, __p, __l, __o, __d, __e, __d)>>> for Bomb[src]
impl IsVariant<TStr<__TS<(__F, __o, __o)>>> for Enum2[src]
impl IsVariant<TStr<__TS<(__F, __o, __o)>>> for Enum3[src]
impl IsVariant<TStr<__TS<(__F, __o, __o)>>> for Enum4[src]
impl IsVariant<TStr<__TS<(__F, __o, __o)>>> for Variants[src]
impl IsVariant<TStr<__TS<(__L, __i, __m, __b, __s)>>> for EnumOptA[src]
impl IsVariant<TStr<__TS<(__L, __i, __m, __b, __s)>>> for EnumOptFlying[src]
impl IsVariant<TStr<__TS<(__N, __o, __p, __e)>>> for Bomb[src]
impl IsVariant<TStr<__TS<(__N, __o, __p, __e)>>> for WithBar[src]
impl IsVariant<TStr<__TS<(__N, __o, __p, __e)>>> for WithBoom[src]
impl IsVariant<TStr<__TS<(__Q, __u, __x)>>> for Enum4[src]
impl IsVariant<TStr<__TS<(__Z, __i, __e, __m, __n, __i, __a, __k)>>> for Vegetable[src]
impl<'a> IsVariant<TStr<__TS<(__U, __3, __2)>>> for EnumWithNewtype<'a>[src]
impl<'a> IsVariant<TStr<__TS<(__U, __3, __2)>>> for EnumWithoutNewtype<'a>[src]
impl<'a> IsVariant<TStr<__TS<(__U, __6, __4)>>> for EnumWithNewtype<'a>[src]
impl<'a> IsVariant<TStr<__TS<(__U, __6, __4)>>> for EnumWithoutNewtype<'a>[src]
impl<T, __V> IsVariant<TStr<__V>> for Delegating<T> where
T: IsVariant<TStr<__V>>, [src]
T: IsVariant<TStr<__V>>,
fn is_variant_(&self, name: TStr<__V>) -> bool[src]
impl<T, __V> IsVariant<TStr<__V>> for StrucWrapper<T> where
T: IsVariant<TStr<__V>>, [src]
T: IsVariant<TStr<__V>>,