Enum valuable::Variant [−][src]
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>)
Tuple Fields
0: &'static VariantDef<'static>
The variant is statically defined by the associated enum.
Dynamic(VariantDef<'a>)
Tuple Fields
0: VariantDef<'a>
The variant is dynamically defined and not included as part of
Enumerable::definition()
.
Implementations
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());
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());
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());