Struct bevy::reflect::utility::GenericTypeInfoCell
pub struct GenericTypeInfoCell(_);
Expand description
A container for TypeInfo
over generic types, allowing instances to be stored statically.
This is specifically meant for use with generic types. If your type isn’t generic,
then use NonGenericTypeInfoCell
instead as it should be much more performant.
Example
use bevy_reflect::utility::GenericTypeInfoCell;
struct Foo<T: Reflect>(T);
impl<T: Reflect> Typed for Foo<T> {
fn type_info() -> &'static TypeInfo {
static CELL: GenericTypeInfoCell = GenericTypeInfoCell::new();
CELL.get_or_insert::<Self, _>(|| {
let fields = [UnnamedField::new::<T>(0)];
let info = TupleStructInfo::new::<Self>("Foo", &fields);
TypeInfo::TupleStruct(info)
})
}
}
Implementations§
§impl GenericTypeInfoCell
impl GenericTypeInfoCell
pub const fn new() -> GenericTypeInfoCell
pub const fn new() -> GenericTypeInfoCell
Initialize a GenericTypeInfoCell
for generic types.
Auto Trait Implementations§
impl !RefUnwindSafe for GenericTypeInfoCell
impl Send for GenericTypeInfoCell
impl Sync for GenericTypeInfoCell
impl Unpin for GenericTypeInfoCell
impl !UnwindSafe for GenericTypeInfoCell
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
Return the
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§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
.§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
.§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.§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.