pub struct Assets<T> where
T: Asset, { /* private fields */ }
Expand description
Stores Assets of a given type and tracks changes to them.
Each asset is mapped by a unique HandleId
, allowing any Handle
with the same
HandleId
to access it. These assets remain loaded for as long as a Strong handle to that
asset exists.
To store a reference to an asset without forcing it to stay loaded, you can use a Weak handle.
To make a Weak handle a Strong one, use Assets::get_handle
or pass the Assets
collection
into the handle’s make_strong
method.
Remember, if there are no Strong handles for an asset (i.e. they have all been dropped), the asset will unload. Make sure you always have a Strong handle when you want to keep an asset loaded!
Implementations
impl<T> Assets<T> where
T: Asset,
impl<T> Assets<T> where
T: Asset,
pub fn add(&mut self, asset: T) -> Handle<T>
pub fn add(&mut self, asset: T) -> Handle<T>
Adds an asset to the collection, returning a Strong handle to that asset.
Events
pub fn set<H>(&mut self, handle: H, asset: T) -> Handle<T> where
H: Into<HandleId>,
pub fn set<H>(&mut self, handle: H, asset: T) -> Handle<T> where
H: Into<HandleId>,
Add/modify the asset pointed to by the given handle.
Unless there exists another Strong handle for this asset, it’s advised to use the returned Strong handle. Not doing so may result in the unexpected release of the asset.
See set_untracked
for more info.
pub fn set_untracked<H>(&mut self, handle: H, asset: T) where
H: Into<HandleId>,
pub fn set_untracked<H>(&mut self, handle: H, asset: T) where
H: Into<HandleId>,
Add/modify the asset pointed to by the given handle.
If an asset already exists with the given HandleId
, it will be modified. Otherwise the
new asset will be inserted.
Events
AssetEvent::Created
: Sent if the asset did not yet exist with the given handleAssetEvent::Modified
: Sent if the asset with given handle already existed
pub fn contains<H>(&self, handle: H) -> bool where
H: Into<HandleId>,
pub fn contains<H>(&self, handle: H) -> bool where
H: Into<HandleId>,
Checks if an asset exists for the given handle
pub fn get_handle<H>(&self, handle: H) -> Handle<T> where
H: Into<HandleId>,
pub fn get_handle<H>(&self, handle: H) -> Handle<T> where
H: Into<HandleId>,
Gets a Strong handle pointing to the same asset as the given one
pub fn get_or_insert_with<H>(
&mut self,
handle: H,
insert_fn: impl FnOnce() -> T
) -> &mut T where
H: Into<HandleId>,
pub fn get_or_insert_with<H>(
&mut self,
handle: H,
insert_fn: impl FnOnce() -> T
) -> &mut T where
H: Into<HandleId>,
Get mutable access to an asset for the given handle, inserting a new value if none exists.
Events
AssetEvent::Created
: Sent if the asset did not yet exist with the given handle
pub fn iter(&self) -> impl Iterator<Item = (HandleId, &T)>
pub fn iter(&self) -> impl Iterator<Item = (HandleId, &T)>
Get an iterator over all assets in the collection.
pub fn iter_mut(&mut self) -> impl Iterator<Item = (HandleId, &mut T)>
pub fn iter_mut(&mut self) -> impl Iterator<Item = (HandleId, &mut T)>
Get a mutable iterator over all assets in the collection.
pub fn ids(&self) -> impl Iterator<Item = HandleId>
pub fn ids(&self) -> impl Iterator<Item = HandleId>
Get an iterator over all HandleId
’s in the collection.
pub fn remove<H>(&mut self, handle: H) -> Option<T> where
H: Into<HandleId>,
pub fn remove<H>(&mut self, handle: H) -> Option<T> where
H: Into<HandleId>,
Remove an asset for the given handle.
The asset is returned if it existed in the collection, otherwise None
.
Events
pub fn clear(&mut self)
pub fn clear(&mut self)
Clears the inner asset map, removing all key-value pairs.
Keeps the allocated memory for reuse.
pub fn reserve(&mut self, additional: usize)
pub fn reserve(&mut self, additional: usize)
Reserves capacity for at least additional more elements to be inserted into the assets.
The collection may reserve more space to avoid frequent reallocations.
pub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Shrinks the capacity of the asset map as much as possible.
It will drop down as much as possible while maintaining the internal rules and possibly leaving some space in accordance with the resize policy.
pub fn asset_event_system(
events: EventWriter<'_, '_, AssetEvent<T>>,
assets: ResMut<'_, Assets<T>>
)
Trait Implementations
Auto Trait Implementations
impl<T> RefUnwindSafe for Assets<T> where
T: RefUnwindSafe,
impl<T> Send for Assets<T>
impl<T> Sync for Assets<T>
impl<T> Unpin for Assets<T> where
T: Unpin,
impl<T> UnwindSafe for Assets<T> where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘNotable traits for Box<F, A>impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘNotable traits for Box<F, A>impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
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
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
. Read more
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. Read more
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. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn instrument(self, span: Span) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
sourcefn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
fn in_current_span(self) -> Instrumented<Self>ⓘNotable traits for Instrumented<T>impl<T> Future for Instrumented<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
where
S: Into<Dispatch>,
T: Future, type Output = <T as Future>::Output;
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
fn with_current_subscriber(self) -> WithDispatch<Self>ⓘNotable traits for WithDispatch<T>impl<T> Future for WithDispatch<T> where
T: Future, type Output = <T as Future>::Output;
T: Future, type Output = <T as Future>::Output;
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more