Struct keeshond_datapack::PreparedStore [−][src]
pub struct PreparedStore<T: DataObject + 'static, U> { /* fields omitted */ }
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
impl<T: DataObject + 'static, U> PreparedStore<T, U>
[src]
impl<T: DataObject + 'static, U> PreparedStore<T, U>
[src]pub fn new(
data_store: &mut DataStore<T>,
data_preparer: Box<dyn DataPreparer<T, U>>
) -> Result<PreparedStore<T, U>, PreparedStoreError>
[src]
pub fn new(
data_store: &mut DataStore<T>,
data_preparer: Box<dyn DataPreparer<T, U>>
) -> Result<PreparedStore<T, U>, PreparedStoreError>
[src]Creates a new PreparedStore that holds prepared versions U
of DataObjects T
, and
associates with the given DataStore.
pub fn sync(
&mut self,
data_store: &mut DataStore<T>
) -> Result<(), PreparedStoreError>
[src]
pub fn sync(
&mut self,
data_store: &mut DataStore<T>
) -> Result<(), PreparedStoreError>
[src]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
impl<T, U> !RefUnwindSafe for PreparedStore<T, U>
impl<T, U> !Send for PreparedStore<T, U>
impl<T, U> !Sync for PreparedStore<T, U>
impl<T, U> Unpin for PreparedStore<T, U> where
U: Unpin,
U: Unpin,