pub struct Assets<T: AssetSource> { /* private fields */ }Expand description
Unified storage for source and processed assets of type T.
Each entry holds both the raw source data (T) and the uploaded result
(T::Processed), keyed by the same Handle<T>.
AssetPlugin fills in processed
after a successful Asset::upload.
Use get to retrieve the processed result (e.g. for
rendering), and get_source to access the raw data.
Implementations§
Source§impl<T: AssetSource> Assets<T>
impl<T: AssetSource> Assets<T>
pub fn new() -> Self
Sourcepub fn insert(&mut self, name: &str, source: T) -> Handle<T>
pub fn insert(&mut self, name: &str, source: T) -> Handle<T>
Insert source under name, returning its handle.
If an asset with the same name already exists, its source data is replaced in-place (the same handle is reused and re-queued for re-upload), and any previously processed result is cleared.
Sourcepub fn get(&self, handle: Handle<T>) -> Option<&T::Processed>
pub fn get(&self, handle: Handle<T>) -> Option<&T::Processed>
Look up the processed (uploaded) asset for handle.
Returns None if the handle is null, stale, or the asset has not
finished uploading yet.
Sourcepub fn get_source(&self, handle: Handle<T>) -> Option<&T>
pub fn get_source(&self, handle: Handle<T>) -> Option<&T>
Look up the raw source data for handle.
Sourcepub fn get_source_mut(&mut self, handle: Handle<T>) -> Option<&mut T>
pub fn get_source_mut(&mut self, handle: Handle<T>) -> Option<&mut T>
Mutably look up the raw source data for handle.
Sourcepub fn is_ready(&self, handle: Handle<T>) -> bool
pub fn is_ready(&self, handle: Handle<T>) -> bool
Returns true if handle exists and its processed asset is ready.
Never logs — safe to poll speculatively.
Sourcepub fn contains(&self, handle: Handle<T>) -> bool
pub fn contains(&self, handle: Handle<T>) -> bool
Returns true if handle currently refers to a present entry.
Never logs — safe to poll speculatively.
Sourcepub fn get_by_name(&self, name: &str) -> Option<&T::Processed>
pub fn get_by_name(&self, name: &str) -> Option<&T::Processed>
Look up the processed asset by the name it was inserted under.
None if the name is unknown or the asset hasn’t uploaded yet —
not logged, since “still uploading” is a normal transient state.
Sourcepub fn get_source_by_name(&self, name: &str) -> Option<&T>
pub fn get_source_by_name(&self, name: &str) -> Option<&T>
Look up the raw source data by the name it was inserted under.
Sourcepub fn get_handle_by_name(&self, name: &str) -> Option<Handle<T>>
pub fn get_handle_by_name(&self, name: &str) -> Option<Handle<T>>
Look up a handle by name.
Sourcepub fn replace(&mut self, handle: Handle<T>, source: T) -> bool
pub fn replace(&mut self, handle: Handle<T>, source: T) -> bool
Replace the source data for handle, invalidating the processed
result and re-queuing for upload. Returns false if the handle is
null or not present.
Sourcepub fn mark_dirty(&mut self, handle: Handle<T>)
pub fn mark_dirty(&mut self, handle: Handle<T>)
Mark a single asset as dirty so the sync system re-uploads it next tick, even though its source data has not changed (e.g. a dependency was recreated). Does nothing if the handle is null or not present.
Sourcepub fn remove(&mut self, handle: Handle<T>) -> Option<T>
pub fn remove(&mut self, handle: Handle<T>) -> Option<T>
Remove an asset by handle, returning the source value if it existed. The processed asset is also discarded.
Sourcepub fn remove_by_name(&mut self, name: &str) -> Option<T>
pub fn remove_by_name(&mut self, name: &str) -> Option<T>
Remove an asset by name, returning the source value if it existed.
Sourcepub fn iter(&self) -> impl Iterator<Item = (RawAssetHandle, &T::Processed)>
pub fn iter(&self) -> impl Iterator<Item = (RawAssetHandle, &T::Processed)>
Iterate over all entries that have a processed result ready.
Sourcepub fn iter_source(&self) -> impl Iterator<Item = (RawAssetHandle, &T)>
pub fn iter_source(&self) -> impl Iterator<Item = (RawAssetHandle, &T)>
Iterate over all source entries regardless of upload state.
Sourcepub fn names(&self) -> impl Iterator<Item = (&str, RawAssetHandle)>
pub fn names(&self) -> impl Iterator<Item = (&str, RawAssetHandle)>
Iterate over (name, handle) pairs for every named asset.
Auto Trait Implementations§
impl<T> Freeze for Assets<T>
impl<T> RefUnwindSafe for Assets<T>
impl<T> Send for Assets<T>
impl<T> Sync for Assets<T>
impl<T> Unpin for Assets<T>
impl<T> UnsafeUnpin for Assets<T>
impl<T> UnwindSafe for Assets<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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> Component for T
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>
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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> 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)
&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)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more