pub struct PreparedStore<T: DataObject + 'static, U> { /* private fields */ }
Expand description

An optional companion to a DataStore. If you have data that needs initialization with a backend (for example, textures you need to upload to a GPU), PreparedStore provides a way to handle this in a two-step process that is borrow-checker-friendly.

Template parameter T is the type of the source DataObject, and template parameter U is the prepared data. This system allows you to separate logical, backend-agnostic data from backend-specific resources. For graphics, you might use T to represent the raw image data and metadata such as width and height, and use U to represent a handle to the texture in VRAM.

In order to function, you should call PreparedStore::sync() once per frame before needing to use the resources in question in your backend. This will “prepare” or “unprepare” any resources as needed.

The PreparedStore instance must be associated with a DataStore. Only one PreparedStore can be associated with any given DataStore.

Implementations

Creates a new PreparedStore that holds prepared versions U of DataObjects T, and associates with the given DataStore.

Returns a reference to the prepared data by the given DataId, if one exists. Otherwise returns None.

Returns a mutable reference to the prepared data by the given DataId, if one exists. Otherwise returns None.

Synchronizes this store with the associated DataStore. If any DataObjects were recently loaded, they will be prepared by calling DataPreparer::prepare(). If any were recently unloaded, they will be “unprepared” (unloaded from the backend) by calling DataPreparer::unprepare().

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

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. Read more

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.