Struct bevy_reflect::TypeRegistry
source · pub struct TypeRegistry { /* private fields */ }
Expand description
A registry of reflected types.
Implementations§
source§impl TypeRegistry
impl TypeRegistry
sourcepub fn register<T>(&mut self)where
T: GetTypeRegistration,
pub fn register<T>(&mut self)where
T: GetTypeRegistration,
Registers the type T
, adding reflect data as specified in the Reflect
derive:
#[derive(Reflect)]
#[reflect(Component, Serialize, Deserialize)] // will register ReflectComponent, ReflectSerialize, ReflectDeserialize
sourcepub fn add_registration(&mut self, registration: TypeRegistration)
pub fn add_registration(&mut self, registration: TypeRegistration)
Registers the type described by registration
.
sourcepub fn register_type_data<T: Reflect + 'static, D: TypeData + FromType<T>>(
&mut self
)
pub fn register_type_data<T: Reflect + 'static, D: TypeData + FromType<T>>(
&mut self
)
Registers the type data D
for type T
.
Most of the time TypeRegistry::register
can be used instead to register a type you derived Reflect
for.
However, in cases where you want to add a piece of type data that was not included in the list of #[reflect(...)]
type data in the derive,
or where the type is generic and cannot register e.g. ReflectSerialize
unconditionally without knowing the specific type parameters,
this method can be used to insert additional type data.
Example
use bevy_reflect::{TypeRegistry, ReflectSerialize, ReflectDeserialize};
let mut type_registry = TypeRegistry::default();
type_registry.register::<Option<String>>();
type_registry.register_type_data::<Option<String>, ReflectSerialize>();
type_registry.register_type_data::<Option<String>, ReflectDeserialize>();
sourcepub fn get(&self, type_id: TypeId) -> Option<&TypeRegistration>
pub fn get(&self, type_id: TypeId) -> Option<&TypeRegistration>
Returns a reference to the TypeRegistration
of the type with the
given TypeId
.
If the specified type has not been registered, returns None
.
sourcepub fn get_mut(&mut self, type_id: TypeId) -> Option<&mut TypeRegistration>
pub fn get_mut(&mut self, type_id: TypeId) -> Option<&mut TypeRegistration>
Returns a mutable reference to the TypeRegistration
of the type with
the given TypeId
.
If the specified type has not been registered, returns None
.
sourcepub fn get_with_name(&self, type_name: &str) -> Option<&TypeRegistration>
pub fn get_with_name(&self, type_name: &str) -> Option<&TypeRegistration>
Returns a reference to the TypeRegistration
of the type with the
given name.
If no type with the given name has been registered, returns None
.
sourcepub fn get_with_name_mut(
&mut self,
type_name: &str
) -> Option<&mut TypeRegistration>
pub fn get_with_name_mut(
&mut self,
type_name: &str
) -> Option<&mut TypeRegistration>
Returns a mutable reference to the TypeRegistration
of the type with
the given name.
If no type with the given name has been registered, returns None
.
sourcepub fn get_with_short_name(
&self,
short_type_name: &str
) -> Option<&TypeRegistration>
pub fn get_with_short_name(
&self,
short_type_name: &str
) -> Option<&TypeRegistration>
Returns a reference to the TypeRegistration
of the type with
the given short name.
If the short name is ambiguous, or if no type with the given short name
has been registered, returns None
.
sourcepub fn get_with_short_name_mut(
&mut self,
short_type_name: &str
) -> Option<&mut TypeRegistration>
pub fn get_with_short_name_mut(
&mut self,
short_type_name: &str
) -> Option<&mut TypeRegistration>
Returns a mutable reference to the TypeRegistration
of the type with
the given short name.
If the short name is ambiguous, or if no type with the given short name
has been registered, returns None
.
sourcepub fn get_type_data<T: TypeData>(&self, type_id: TypeId) -> Option<&T>
pub fn get_type_data<T: TypeData>(&self, type_id: TypeId) -> Option<&T>
Returns a reference to the TypeData
of type T
associated with the given TypeId
.
The returned value may be used to downcast Reflect
trait objects to
trait objects of the trait used to generate T
, provided that the
underlying reflected type has the proper #[reflect(DoThing)]
attribute.
If the specified type has not been registered, or if T
is not present
in its type registration, returns None
.
sourcepub fn get_type_data_mut<T: TypeData>(
&mut self,
type_id: TypeId
) -> Option<&mut T>
pub fn get_type_data_mut<T: TypeData>(
&mut self,
type_id: TypeId
) -> Option<&mut T>
Returns a mutable reference to the TypeData
of type T
associated with the given TypeId
.
If the specified type has not been registered, or if T
is not present
in its type registration, returns None
.
sourcepub fn get_type_info(&self, type_id: TypeId) -> Option<&'static TypeInfo>
pub fn get_type_info(&self, type_id: TypeId) -> Option<&'static TypeInfo>
Returns the TypeInfo
associated with the given TypeId
.
If the specified type has not been registered, returns None
.
sourcepub fn iter(&self) -> impl Iterator<Item = &TypeRegistration>
pub fn iter(&self) -> impl Iterator<Item = &TypeRegistration>
Returns an iterator over the TypeRegistration
s of the registered
types.
sourcepub fn iter_mut(&mut self) -> impl Iterator<Item = &mut TypeRegistration>
pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut TypeRegistration>
Returns a mutable iterator over the TypeRegistration
s of the registered
types.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for TypeRegistry
impl Send for TypeRegistry
impl Sync for TypeRegistry
impl Unpin for TypeRegistry
impl !UnwindSafe for TypeRegistry
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>
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
. Read moresource§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read moresource§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read moresource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more