Expand description
A handle into a specific Asset of type T
Handles contain a unique id that corresponds to a specific asset in the Assets collection.
Accessing the Asset
A handle is not the asset itself, but should be seen as a pointer to the asset. Modifying a
handle’s id
only modifies which asset is being pointed to. To get the actual asset, try using
Assets::get
or Assets::get_mut
.
Strong and Weak
A handle can be either “Strong” or “Weak”. Simply put: Strong handles keep the asset loaded, while Weak handles do not affect the loaded status of assets. This is due to a type of reference counting. When the number of Strong handles that exist for any given asset reach zero, the asset is dropped and becomes unloaded. In some cases, you might want a reference to an asset but don’t want to take the responsibility of keeping it loaded that comes with a Strong handle. This is where a Weak handle can be very useful.
For example, imagine you have a Sprite
component and a Collider
component. The Collider
uses
the Sprite
’s image size to check for collisions. It does so by keeping a Weak copy of the
Sprite
’s Strong handle to the image asset.
If the Sprite
is removed, its Strong handle to the image is dropped with it. And since it was the
only Strong handle for that asset, the asset is unloaded. Our Collider
component still has a Weak
handle to the unloaded asset, but it will not be able to retrieve the image data, resulting in
collisions no longer being detected for that entity.
Fields
id: HandleId
The ID of the asset as contained within its respective Assets collection
Implementations
sourceimpl<T> Handle<T> where
T: Asset,
impl<T> Handle<T> where
T: Asset,
pub fn weak(id: HandleId) -> Handle<T>
sourcepub fn as_weak<U>(&self) -> Handle<U> where
U: Asset,
pub fn as_weak<U>(&self) -> Handle<U> where
U: Asset,
Get a copy of this handle as a Weak handle
pub fn is_weak(&self) -> bool
pub fn is_strong(&self) -> bool
sourcepub fn make_strong(&mut self, assets: &mut Assets<T>)
pub fn make_strong(&mut self, assets: &mut Assets<T>)
Makes this handle Strong if it wasn’t already.
This method requires the corresponding Assets collection
pub fn clone_weak(&self) -> Handle<T>
pub fn clone_untyped(&self) -> HandleUntyped
pub fn clone_weak_untyped(&self) -> HandleUntyped
Trait Implementations
sourceimpl<T> Component for Handle<T> where
T: Asset,
Handle<T>: 'static,
Handle<T>: Send,
Handle<T>: Sync,
impl<T> Component for Handle<T> where
T: Asset,
Handle<T>: 'static,
Handle<T>: Send,
Handle<T>: Sync,
type Storage = TableStorage
sourceimpl<T> FromReflect for Handle<T> where
T: Asset,
HandleId: FromReflect,
impl<T> FromReflect for Handle<T> where
T: Asset,
HandleId: FromReflect,
sourcefn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Handle<T>>
fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Handle<T>>
Constructs a concrete instance of Self
from a reflected value.
sourceimpl<T> GetTypeRegistration for Handle<T> where
T: Asset,
impl<T> GetTypeRegistration for Handle<T> where
T: Asset,
sourceimpl<T> Ord for Handle<T> where
T: Asset,
impl<T> Ord for Handle<T> where
T: Asset,
sourceimpl<T> PartialOrd<Handle<T>> for Handle<T> where
T: Asset,
impl<T> PartialOrd<Handle<T>> for Handle<T> where
T: Asset,
sourcefn partial_cmp(&self, other: &Handle<T>) -> Option<Ordering>
fn partial_cmp(&self, other: &Handle<T>) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl<T> Reflect for Handle<T> where
T: Asset,
impl<T> Reflect for Handle<T> where
T: Asset,
sourcefn any_mut(&mut self) -> &mut (dyn Any + 'static)
fn any_mut(&mut self) -> &mut (dyn Any + 'static)
Returns the value as a &mut dyn Any
.
sourcefn clone_value(&self) -> Box<dyn Reflect + 'static, Global>
fn clone_value(&self) -> Box<dyn Reflect + 'static, Global>
Clones the value as a Reflect
trait object. Read more
sourcefn set(
&mut self,
value: Box<dyn Reflect + 'static, Global>
) -> Result<(), Box<dyn Reflect + 'static, Global>>
fn set(
&mut self,
value: Box<dyn Reflect + 'static, Global>
) -> Result<(), Box<dyn Reflect + 'static, Global>>
Performs a type-checked assignment of a reflected value to this value. Read more
sourcefn apply(&mut self, value: &(dyn Reflect + 'static))
fn apply(&mut self, value: &(dyn Reflect + 'static))
Applies a reflected value to this value. Read more
sourcefn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Returns an enumeration of “kinds” of type. Read more
sourcefn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Returns a mutable enumeration of “kinds” of type. Read more
sourcefn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
Returns a serializable version of the value. Read more
sourcefn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Returns a hash of the value (which includes the type). Read more
sourceimpl<T> Struct for Handle<T> where
T: Asset,
impl<T> Struct for Handle<T> where
T: Asset,
sourcefn field(&self, name: &str) -> Option<&(dyn Reflect + 'static)>
fn field(&self, name: &str) -> Option<&(dyn Reflect + 'static)>
Returns a reference to the value of the field named name
as a &dyn Reflect
. Read more
sourcefn field_mut(&mut self, name: &str) -> Option<&mut (dyn Reflect + 'static)>
fn field_mut(&mut self, name: &str) -> Option<&mut (dyn Reflect + 'static)>
Returns a mutable reference to the value of the field named name
as a
&mut dyn Reflect
. Read more
sourcefn field_at(&self, index: usize) -> Option<&(dyn Reflect + 'static)>
fn field_at(&self, index: usize) -> Option<&(dyn Reflect + 'static)>
Returns a reference to the value of the field with index index
as a
&dyn Reflect
. Read more
sourcefn field_at_mut(&mut self, index: usize) -> Option<&mut (dyn Reflect + 'static)>
fn field_at_mut(&mut self, index: usize) -> Option<&mut (dyn Reflect + 'static)>
Returns a mutable reference to the value of the field with index index
as a &mut dyn Reflect
. Read more
sourcefn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
Returns the name of the field with index index
.
sourcefn iter_fields(&self) -> FieldIter<'_>ⓘNotable traits for FieldIter<'a>impl<'a> Iterator for FieldIter<'a> type Item = &'a (dyn Reflect + 'static);
fn iter_fields(&self) -> FieldIter<'_>ⓘNotable traits for FieldIter<'a>impl<'a> Iterator for FieldIter<'a> type Item = &'a (dyn Reflect + 'static);
Returns an iterator over the values of the struct’s fields.
sourcefn clone_dynamic(&self) -> DynamicStruct
fn clone_dynamic(&self) -> DynamicStruct
Clones the struct into a DynamicStruct
.
impl<T> Eq for Handle<T> where
T: Asset,
Auto Trait Implementations
impl<T> RefUnwindSafe for Handle<T>
impl<T> Send for Handle<T>
impl<T> Sync for Handle<T>
impl<T> Unpin for Handle<T>
impl<T> UnwindSafe for Handle<T>
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>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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> FromWorld for T where
T: Default,
impl<T> FromWorld for T where
T: Default,
sourcefn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using data from the given World
sourceimpl<S> GetField for S where
S: Struct,
impl<S> GetField for S where
S: Struct,
sourceimpl<T> GetPath for T where
T: Reflect,
impl<T> GetPath for T where
T: Reflect,
sourcefn path(
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
fn path(
&'r self,
path: &'p str
) -> Result<&'r (dyn Reflect + 'static), ReflectPathError<'p>>
Returns a reference to the value specified by path
. Read more
sourcefn path_mut(
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn path_mut(
&'r mut self,
path: &'p str
) -> Result<&'r mut (dyn Reflect + 'static), ReflectPathError<'p>>
Returns a mutable reference to the value specified by path
. Read more
sourcefn get_path<T>(&'r self, path: &'p str) -> Result<&'r T, ReflectPathError<'p>> where
T: Reflect,
fn get_path<T>(&'r self, path: &'p str) -> Result<&'r T, ReflectPathError<'p>> where
T: Reflect,
Returns a statically typed reference to the value specified by path
.
sourcefn get_path_mut<T>(
&'r mut self,
path: &'p str
) -> Result<&'r mut T, ReflectPathError<'p>> where
T: Reflect,
fn get_path_mut<T>(
&'r mut self,
path: &'p str
) -> Result<&'r mut T, ReflectPathError<'p>> where
T: Reflect,
Returns a statically typed mutable reference to the value specified by
path
. 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;
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
sourceimpl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
impl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>
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