pub enum Variant<'a> {
Static(&'static VariantDef<'static>),
Dynamic(VariantDef<'a>),
}
Expand description
An enum variant
Returned by Enumerable::variant()
, Variant
represents a single enum
variant.
Variants§
Static(&'static VariantDef<'static>)
The variant is statically defined by the associated enum.
Dynamic(VariantDef<'a>)
The variant is dynamically defined and not included as part of
Enumerable::definition()
.
Implementations§
Source§impl Variant<'_>
impl Variant<'_>
Sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
Returns the variant’s name
§Examples
use valuable::{Fields, Variant, VariantDef};
static VARIANT: &VariantDef<'static> = &VariantDef::new(
"Foo", Fields::Unnamed(2));
let variant = Variant::Static(VARIANT);
assert_eq!("Foo", variant.name());
Sourcepub fn is_named_fields(&self) -> bool
pub fn is_named_fields(&self) -> bool
Returns true
if the variant has associated named fields.
§Examples
With named fields
use valuable::{Fields, NamedField, Variant, VariantDef};
static VARIANT: &VariantDef<'static> = &VariantDef::new(
"Foo", Fields::Named(&[NamedField::new("hello")]));
let variant = Variant::Static(VARIANT);
assert!(variant.is_named_fields());
With unnamed fields
use valuable::{Fields, Variant, VariantDef};
static VARIANT: &VariantDef<'static> = &VariantDef::new(
"Foo", Fields::Unnamed(1));
let variant = Variant::Static(VARIANT);
assert!(!variant.is_named_fields());
Sourcepub fn is_unnamed_fields(&self) -> bool
pub fn is_unnamed_fields(&self) -> bool
Returns true
if the variant has associated unnamed fields.
§Examples
With named fields
use valuable::{Fields, NamedField, Variant, VariantDef};
static VARIANT: &VariantDef<'static> = &VariantDef::new(
"Foo", Fields::Named(&[NamedField::new("hello")]));
let variant = Variant::Static(VARIANT);
assert!(!variant.is_unnamed_fields());
With unnamed fields
use valuable::{Fields, Variant, VariantDef};
static VARIANT: &VariantDef<'static> = &VariantDef::new(
"Foo", Fields::Unnamed(1));
let variant = Variant::Static(VARIANT);
assert!(variant.is_unnamed_fields());
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for Variant<'a>
impl<'a> RefUnwindSafe for Variant<'a>
impl<'a> Send for Variant<'a>
impl<'a> Sync for Variant<'a>
impl<'a> Unpin for Variant<'a>
impl<'a> UnwindSafe for Variant<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more