Struct bevy::reflect::TypeRegistry
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§
§impl TypeRegistry
impl TypeRegistry
pub fn empty() -> TypeRegistry
pub fn empty() -> TypeRegistry
Create a type registry with no registered types.
pub fn new() -> TypeRegistry
pub fn new() -> TypeRegistry
Create a type registry with default registrations for primitive types.
pub fn register<T>(&mut self)where
T: GetTypeRegistration,
pub fn register<T>(&mut self)where T: GetTypeRegistration,
pub fn add_registration(&mut self, registration: TypeRegistration)
pub fn add_registration(&mut self, registration: TypeRegistration)
Registers the type described by registration
.
pub fn register_type_data<T, D>(&mut self)where
T: Reflect + TypePath,
D: TypeData + FromType<T>,
pub fn register_type_data<T, D>(&mut self)where T: Reflect + TypePath, D: TypeData + FromType<T>,
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>();
pub 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
.
pub 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
.
pub 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
.
pub 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
.
pub 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
.
pub 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
.
pub 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
.
pub fn get_type_data_mut<T>(&mut self, type_id: TypeId) -> Option<&mut T>where
T: TypeData,
pub fn get_type_data_mut<T>(&mut self, type_id: TypeId) -> Option<&mut T>where T: TypeData,
pub fn get_type_info(&self, type_id: TypeId) -> Option<&'static TypeInfo>
pub fn get_type_info(&self, type_id: TypeId) -> Option<&'static TypeInfo>
pub 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.
pub 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§
§impl Default for TypeRegistry
impl Default for TypeRegistry
§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§
§impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,
§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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, 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
.§fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§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.§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.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World
.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<R, P> ReadPrimitive<R> for Pwhere
R: Read + ReadEndian<P>,
P: Default,
impl<R, P> ReadPrimitive<R> for Pwhere R: Read + ReadEndian<P>, P: Default,
source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.