pub struct NonGenericTypeCell<T: TypedProperty>(/* private fields */);Expand description
A container for TypeInfo over non-generic types, allowing instances to be stored statically.
This is specifically meant for use with non-generic types. If your type is generic,
then use GenericTypeCell instead. Otherwise, it will not take into account all
monomorphizations of your type.
Non-generic TypePaths should be trivially generated with string literals and concat!.
§Example
use bevy_reflect::utility::NonGenericTypeInfoCell;
struct Foo {
    bar: i32
}
impl Typed for Foo {
    fn type_info() -> &'static TypeInfo {
        static CELL: NonGenericTypeInfoCell = NonGenericTypeInfoCell::new();
        CELL.get_or_set(|| {
            let fields = [NamedField::new::<i32>("bar")];
            let info = StructInfo::new::<Self>(&fields);
            TypeInfo::Struct(info)
        })
    }
}Implementations§
Source§impl<T: TypedProperty> NonGenericTypeCell<T>
 
impl<T: TypedProperty> NonGenericTypeCell<T>
Sourcepub const fn new() -> Self
 
pub const fn new() -> Self
Initialize a NonGenericTypeCell for non-generic types.
Sourcepub fn get_or_set<F>(&self, f: F) -> &T::Stored
 
pub fn get_or_set<F>(&self, f: F) -> &T::Stored
Returns a reference to the TypedProperty stored in the cell.
If there is no entry found, a new one will be generated from the given function.
Trait Implementations§
Source§impl<T: TypedProperty> Default for NonGenericTypeCell<T>
 
impl<T: TypedProperty> Default for NonGenericTypeCell<T>
Auto Trait Implementations§
impl<T> !Freeze for NonGenericTypeCell<T>
impl<T> RefUnwindSafe for NonGenericTypeCell<T>
impl<T> Send for NonGenericTypeCell<T>
impl<T> Sync for NonGenericTypeCell<T>
impl<T> Unpin for NonGenericTypeCell<T>
impl<T> UnwindSafe for NonGenericTypeCell<T>
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
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>
Converts 
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn 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>
Converts 
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which 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)
Converts 
&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)
Converts 
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.