Struct bevy::reflect::TypeRegistry
source · pub struct TypeRegistry { /* private fields */ }
Expand description
A registry of reflected types.
This struct is used as the central store for type information.
Registering a type will generate a new TypeRegistration
entry in this store
using a type’s GetTypeRegistration
implementation
(which is automatically implemented when using #[derive(Reflect)]
).
See the crate-level documentation for more information.
Implementations§
source§impl TypeRegistry
impl TypeRegistry
sourcepub fn empty() -> TypeRegistry
pub fn empty() -> TypeRegistry
Create a type registry with no registered types.
sourcepub fn new() -> TypeRegistry
pub fn new() -> TypeRegistry
Create a type registry with default registrations for primitive types.
sourcepub fn register<T>(&mut self)where
T: GetTypeRegistration,
pub fn register<T>(&mut self)where
T: GetTypeRegistration,
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, D>(&mut self)
pub fn register_type_data<T, D>(&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_type_path(&self, type_path: &str) -> Option<&TypeRegistration>
pub fn get_with_type_path(&self, type_path: &str) -> Option<&TypeRegistration>
Returns a reference to the TypeRegistration
of the type with the
given type path.
If no type with the given path has been registered, returns None
.
sourcepub fn get_with_type_path_mut(
&mut self,
type_path: &str
) -> Option<&mut TypeRegistration>
pub fn get_with_type_path_mut( &mut self, type_path: &str ) -> Option<&mut TypeRegistration>
Returns a mutable reference to the TypeRegistration
of the type with
the given type path.
If no type with the given type path has been registered, returns None
.
sourcepub fn get_with_short_type_path(
&self,
short_type_path: &str
) -> Option<&TypeRegistration>
pub fn get_with_short_type_path( &self, short_type_path: &str ) -> Option<&TypeRegistration>
Returns a reference to the TypeRegistration
of the type with
the given [short type path].
If the short type path is ambiguous, or if no type with the given path
has been registered, returns None
.
sourcepub fn get_with_short_type_path_mut(
&mut self,
short_type_path: &str
) -> Option<&mut TypeRegistration>
pub fn get_with_short_type_path_mut( &mut self, short_type_path: &str ) -> Option<&mut TypeRegistration>
Returns a mutable reference to the TypeRegistration
of the type with
the given [short type path].
If the short type path is ambiguous, or if no type with the given path
has been registered, returns None
.
sourcepub fn get_type_data<T>(&self, type_id: TypeId) -> Option<&T>where
T: TypeData,
pub fn get_type_data<T>(&self, type_id: TypeId) -> Option<&T>where
T: TypeData,
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_info(&self, type_id: TypeId) -> Option<&'static TypeInfo>
pub fn get_type_info(&self, type_id: TypeId) -> Option<&'static TypeInfo>
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§
source§impl Default for TypeRegistry
impl Default for TypeRegistry
source§fn default() -> TypeRegistry
fn default() -> TypeRegistry
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, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
&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)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World
.