Struct bevy_reflect::DynamicEnum
source · pub struct DynamicEnum { /* private fields */ }
Expand description
A dynamic representation of an enum.
This allows for enums to be configured at runtime.
Example
// The original enum value
let mut value: Option<usize> = Some(123);
// Create a DynamicEnum to represent the new value
let mut dyn_enum = DynamicEnum::new(
Reflect::type_name(&value),
"None",
DynamicVariant::Unit
);
// Apply the DynamicEnum as a patch to the original value
value.apply(&dyn_enum);
// Tada!
assert_eq!(None, value);
Implementations§
source§impl DynamicEnum
impl DynamicEnum
sourcepub fn new<I: Into<String>, V: Into<DynamicVariant>>(
name: I,
variant_name: I,
variant: V
) -> Self
pub fn new<I: Into<String>, V: Into<DynamicVariant>>( name: I, variant_name: I, variant: V ) -> Self
Create a new DynamicEnum
to represent an enum at runtime.
Arguments
name
: The type name of the enumvariant_name
: The name of the variant to setvariant
: The variant data
sourcepub fn new_with_index<I: Into<String>, V: Into<DynamicVariant>>(
name: I,
variant_index: usize,
variant_name: I,
variant: V
) -> Self
pub fn new_with_index<I: Into<String>, V: Into<DynamicVariant>>( name: I, variant_index: usize, variant_name: I, variant: V ) -> Self
Create a new DynamicEnum
with a variant index to represent an enum at runtime.
Arguments
name
: The type name of the enumvariant_index
: The index of the variant to setvariant_name
: The name of the variant to setvariant
: The variant data
sourcepub fn set_variant<I: Into<String>, V: Into<DynamicVariant>>(
&mut self,
name: I,
variant: V
)
pub fn set_variant<I: Into<String>, V: Into<DynamicVariant>>( &mut self, name: I, variant: V )
Set the current enum variant represented by this struct.
sourcepub fn set_variant_with_index<I: Into<String>, V: Into<DynamicVariant>>(
&mut self,
variant_index: usize,
name: I,
variant: V
)
pub fn set_variant_with_index<I: Into<String>, V: Into<DynamicVariant>>( &mut self, variant_index: usize, name: I, variant: V )
Set the current enum variant represented by this struct along with its variant index.
sourcepub fn from<TEnum: Enum>(value: TEnum) -> Self
pub fn from<TEnum: Enum>(value: TEnum) -> Self
Create a DynamicEnum
from an existing one.
This is functionally the same as DynamicEnum::from_ref
except it takes an owned value.
sourcepub fn from_ref<TEnum: Enum>(value: &TEnum) -> Self
pub fn from_ref<TEnum: Enum>(value: &TEnum) -> Self
Create a DynamicEnum
from an existing one.
This is functionally the same as DynamicEnum::from
except it takes a reference.
Trait Implementations§
source§impl Debug for DynamicEnum
impl Debug for DynamicEnum
source§impl Default for DynamicEnum
impl Default for DynamicEnum
source§fn default() -> DynamicEnum
fn default() -> DynamicEnum
Returns the “default value” for a type. Read more
source§impl Enum for DynamicEnum
impl Enum for DynamicEnum
source§fn field(&self, name: &str) -> Option<&dyn Reflect>
fn field(&self, name: &str) -> Option<&dyn Reflect>
Returns a reference to the value of the field (in the current variant) with the given name. Read more
source§fn field_at(&self, index: usize) -> Option<&dyn Reflect>
fn field_at(&self, index: usize) -> Option<&dyn Reflect>
Returns a reference to the value of the field (in the current variant) at the given index.
source§fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>
fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>
Returns a mutable reference to the value of the field (in the current variant) with the given name. Read more
source§fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
Returns a mutable reference to the value of the field (in the current variant) at the given index.
source§fn index_of(&self, name: &str) -> Option<usize>
fn index_of(&self, name: &str) -> Option<usize>
Returns the index of the field (in the current variant) with the given name. Read more
source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
Returns the name of the field (in the current variant) with the given index. Read more
source§fn iter_fields(&self) -> VariantFieldIter<'_> ⓘ
fn iter_fields(&self) -> VariantFieldIter<'_> ⓘ
Returns an iterator over the values of the current variant’s fields.
source§fn variant_name(&self) -> &str
fn variant_name(&self) -> &str
The name of the current variant.
source§fn variant_index(&self) -> usize
fn variant_index(&self) -> usize
The index of the current variant.
source§fn variant_type(&self) -> VariantType
fn variant_type(&self) -> VariantType
The type of the current variant.
fn clone_dynamic(&self) -> DynamicEnum
source§fn is_variant(&self, variant_type: VariantType) -> bool
fn is_variant(&self, variant_type: VariantType) -> bool
Returns true if the current variant’s type matches the given one.
source§fn variant_path(&self) -> String
fn variant_path(&self) -> String
Returns the full path to the current variant.
source§impl Reflect for DynamicEnum
impl Reflect for DynamicEnum
source§fn get_type_info(&self) -> &'static TypeInfo
fn get_type_info(&self) -> &'static TypeInfo
source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
Returns the value as a
&mut dyn Any
.source§fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
Casts this type to a boxed reflected value.
source§fn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
Casts this type to a reflected value.
source§fn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
Casts this type to a mutable reflected value.
source§fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
Performs a type-checked assignment of a reflected value to this value. Read more
source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Returns an enumeration of “kinds” of type. Read more
source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Returns a mutable enumeration of “kinds” of type. Read more
source§fn reflect_owned(self: Box<Self>) -> ReflectOwned
fn reflect_owned(self: Box<Self>) -> ReflectOwned
Returns an owned enumeration of “kinds” of type. Read more
source§fn clone_value(&self) -> Box<dyn Reflect>
fn clone_value(&self) -> Box<dyn Reflect>
Clones the value as a
Reflect
trait object. Read moresource§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Returns a hash of the value (which includes the type). Read more
source§fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
Returns a “partial equality” comparison result. Read more
source§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
Returns a serializable version of the value. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for DynamicEnum
impl Send for DynamicEnum
impl Sync for DynamicEnum
impl Unpin for DynamicEnum
impl !UnwindSafe for DynamicEnum
Blanket Implementations§
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
source§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.