pub enum Handle<A>where
A: Asset,{
Strong(Arc<StrongHandle, Global>),
Weak(AssetId<A>),
}
Expand description
A strong or weak handle to a specific Asset
. If a Handle
is Handle::Strong
, the Asset
will be kept
alive until the Handle
is dropped. If a Handle
is Handle::Weak
, it does not necessarily reference a live Asset
,
nor will it keep assets alive.
Handle
can be cloned. If a Handle::Strong
is cloned, the referenced Asset
will not be freed until all instances
of the Handle
are dropped.
Handle::Strong
also provides access to useful Asset
metadata, such as the AssetPath
(if it exists).
Variants§
Strong(Arc<StrongHandle, Global>)
A “strong” reference to a live (or loading) Asset
. If a Handle
is Handle::Strong
, the Asset
will be kept
alive until the Handle
is dropped. Strong handles also provide access to additional asset metadata.
Weak(AssetId<A>)
A “weak” reference to an Asset
. If a Handle
is Handle::Weak
, it does not necessarily reference a live Asset
,
nor will it keep assets alive.
Implementations§
§impl<A> Handle<A>where
A: Asset,
impl<A> Handle<A>where A: Asset,
pub const fn weak_from_u128(value: u128) -> Handle<A>
pub const fn weak_from_u128(value: u128) -> Handle<A>
Create a new Handle::Weak
with the given u128
encoding of a Uuid
.
pub fn path(&self) -> Option<&AssetPath<'static>>
pub fn path(&self) -> Option<&AssetPath<'static>>
Returns the path if this is (1) a strong handle and (2) the asset has a path
pub fn clone_weak(&self) -> Handle<A>
pub fn clone_weak(&self) -> Handle<A>
Creates a Handle::Weak
clone of this Handle
, which will not keep the referenced Asset
alive.
pub fn untyped(self) -> UntypedHandle
pub fn untyped(self) -> UntypedHandle
Converts this Handle
to an “untyped” / “generic-less” UntypedHandle
, which stores the Asset
type information
inside UntypedHandle
. This will return UntypedHandle::Strong
for Handle::Strong
and UntypedHandle::Weak
for
Handle::Weak
.
Trait Implementations§
§impl<A> Component for Handle<A>where
A: Asset,
Handle<A>: Send + Sync + 'static,
impl<A> Component for Handle<A>where A: Asset, Handle<A>: Send + Sync + 'static,
§type Storage = TableStorage
type Storage = TableStorage
TableStorage
or SparseStorage
.§impl<A> Enum for Handle<A>where
A: Asset + TypePath,
Arc<StrongHandle, Global>: FromReflect,
AssetId<A>: FromReflect,
impl<A> Enum for Handle<A>where A: Asset + TypePath, Arc<StrongHandle, Global>: FromReflect, AssetId<A>: FromReflect,
§fn field(&self, __name_param: &str) -> Option<&(dyn Reflect + 'static)>
fn field(&self, __name_param: &str) -> Option<&(dyn Reflect + 'static)>
§fn field_at(&self, __index_param: usize) -> Option<&(dyn Reflect + 'static)>
fn field_at(&self, __index_param: usize) -> Option<&(dyn Reflect + 'static)>
§fn field_mut(
&mut self,
__name_param: &str
) -> Option<&mut (dyn Reflect + 'static)>
fn field_mut( &mut self, __name_param: &str ) -> Option<&mut (dyn Reflect + 'static)>
§fn field_at_mut(
&mut self,
__index_param: usize
) -> Option<&mut (dyn Reflect + 'static)>
fn field_at_mut( &mut self, __index_param: usize ) -> Option<&mut (dyn Reflect + 'static)>
§fn index_of(&self, __name_param: &str) -> Option<usize>
fn index_of(&self, __name_param: &str) -> Option<usize>
§fn name_at(&self, __index_param: usize) -> Option<&str>
fn name_at(&self, __index_param: usize) -> Option<&str>
§fn iter_fields(&self) -> VariantFieldIter<'_> ⓘ
fn iter_fields(&self) -> VariantFieldIter<'_> ⓘ
§fn variant_name(&self) -> &str
fn variant_name(&self) -> &str
§fn variant_index(&self) -> usize
fn variant_index(&self) -> usize
§fn variant_type(&self) -> VariantType
fn variant_type(&self) -> VariantType
fn clone_dynamic(&self) -> DynamicEnum
§fn is_variant(&self, variant_type: VariantType) -> bool
fn is_variant(&self, variant_type: VariantType) -> bool
§fn variant_path(&self) -> String
fn variant_path(&self) -> String
§impl<T> ExtractComponent for Handle<T>where
T: Asset,
impl<T> ExtractComponent for Handle<T>where T: Asset,
§type Query = &'static Handle<T>
type Query = &'static Handle<T>
ReadOnlyWorldQueryData
to fetch the components to extract.§fn extract_component(
handle: <<Handle<T> as ExtractComponent>::Query as WorldQuery>::Item<'_>
) -> Option<<Handle<T> as ExtractComponent>::Out>
fn extract_component( handle: <<Handle<T> as ExtractComponent>::Query as WorldQuery>::Item<'_> ) -> Option<<Handle<T> as ExtractComponent>::Out>
§impl<A> From<&Handle<A>> for UntypedAssetIdwhere
A: Asset,
impl<A> From<&Handle<A>> for UntypedAssetIdwhere A: Asset,
§fn from(value: &Handle<A>) -> UntypedAssetId
fn from(value: &Handle<A>) -> UntypedAssetId
§impl<A> From<Handle<A>> for UntypedAssetIdwhere
A: Asset,
impl<A> From<Handle<A>> for UntypedAssetIdwhere A: Asset,
§fn from(value: Handle<A>) -> UntypedAssetId
fn from(value: Handle<A>) -> UntypedAssetId
§impl<A> From<Handle<A>> for UntypedHandlewhere
A: Asset,
impl<A> From<Handle<A>> for UntypedHandlewhere A: Asset,
§fn from(value: Handle<A>) -> UntypedHandle
fn from(value: Handle<A>) -> UntypedHandle
§impl From<Handle<Image>> for ColorMaterial
impl From<Handle<Image>> for ColorMaterial
§fn from(texture: Handle<Image>) -> ColorMaterial
fn from(texture: Handle<Image>) -> ColorMaterial
§impl From<Handle<Image>> for StandardMaterial
impl From<Handle<Image>> for StandardMaterial
§fn from(texture: Handle<Image>) -> StandardMaterial
fn from(texture: Handle<Image>) -> StandardMaterial
§impl From<Handle<Mesh>> for Mesh2dHandle
impl From<Handle<Mesh>> for Mesh2dHandle
§fn from(handle: Handle<Mesh>) -> Mesh2dHandle
fn from(handle: Handle<Mesh>) -> Mesh2dHandle
§impl<A> FromReflect for Handle<A>where
A: Asset + TypePath,
Arc<StrongHandle, Global>: FromReflect,
AssetId<A>: FromReflect,
impl<A> FromReflect for Handle<A>where A: Asset + TypePath, Arc<StrongHandle, Global>: FromReflect, AssetId<A>: FromReflect,
§fn from_reflect(__param0: &(dyn Reflect + 'static)) -> Option<Handle<A>>
fn from_reflect(__param0: &(dyn Reflect + 'static)) -> Option<Handle<A>>
Self
from a reflected value.§impl<A> FromType<Handle<A>> for ReflectHandlewhere
A: Asset,
impl<A> FromType<Handle<A>> for ReflectHandlewhere A: Asset,
fn from_type() -> ReflectHandle
§impl<A> GetTypeRegistration for Handle<A>where
A: Asset + TypePath,
Arc<StrongHandle, Global>: FromReflect,
AssetId<A>: FromReflect,
impl<A> GetTypeRegistration for Handle<A>where A: Asset + TypePath, Arc<StrongHandle, Global>: FromReflect, AssetId<A>: FromReflect,
§impl<A> Ord for Handle<A>where
A: Asset,
impl<A> Ord for Handle<A>where A: Asset,
§impl<A> PartialEq<Handle<A>> for UntypedHandlewhere
A: Asset,
impl<A> PartialEq<Handle<A>> for UntypedHandlewhere A: Asset,
§impl<A> PartialEq<UntypedHandle> for Handle<A>where
A: Asset,
impl<A> PartialEq<UntypedHandle> for Handle<A>where A: Asset,
§fn eq(&self, other: &UntypedHandle) -> bool
fn eq(&self, other: &UntypedHandle) -> bool
self
and other
values to be equal, and is used
by ==
.§impl<A> PartialOrd<Handle<A>> for Handle<A>where
A: Asset,
impl<A> PartialOrd<Handle<A>> for Handle<A>where A: Asset,
§fn partial_cmp(&self, other: &Handle<A>) -> Option<Ordering>
fn partial_cmp(&self, other: &Handle<A>) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more§impl<A> PartialOrd<Handle<A>> for UntypedHandlewhere
A: Asset,
impl<A> PartialOrd<Handle<A>> for UntypedHandlewhere A: Asset,
§fn partial_cmp(&self, other: &Handle<A>) -> Option<Ordering>
fn partial_cmp(&self, other: &Handle<A>) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more§impl<A> PartialOrd<UntypedHandle> for Handle<A>where
A: Asset,
impl<A> PartialOrd<UntypedHandle> for Handle<A>where A: Asset,
§fn partial_cmp(&self, other: &UntypedHandle) -> Option<Ordering>
fn partial_cmp(&self, other: &UntypedHandle) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more§impl<A> Reflect for Handle<A>where
A: Asset + TypePath,
Arc<StrongHandle, Global>: FromReflect,
AssetId<A>: FromReflect,
impl<A> Reflect for Handle<A>where A: Asset + TypePath, Arc<StrongHandle, Global>: FromReflect, AssetId<A>: FromReflect,
§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
§fn into_any(self: Box<Handle<A>, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<Handle<A>, Global>) -> Box<dyn Any, Global>
Box<dyn Any>
.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any
.§fn into_reflect(self: Box<Handle<A>, Global>) -> Box<dyn Reflect, Global>
fn into_reflect(self: Box<Handle<A>, Global>) -> Box<dyn Reflect, Global>
§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
§fn clone_value(&self) -> Box<dyn Reflect, Global>
fn clone_value(&self) -> Box<dyn Reflect, Global>
Reflect
trait object. Read more§fn set(
&mut self,
__value_param: Box<dyn Reflect, Global>
) -> Result<(), Box<dyn Reflect, Global>>
fn set( &mut self, __value_param: Box<dyn Reflect, Global> ) -> Result<(), Box<dyn Reflect, Global>>
§fn apply(&mut self, __value_param: &(dyn Reflect + 'static))
fn apply(&mut self, __value_param: &(dyn Reflect + 'static))
§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
§fn reflect_owned(self: Box<Handle<A>, Global>) -> ReflectOwned
fn reflect_owned(self: Box<Handle<A>, Global>) -> ReflectOwned
§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
§fn reflect_partial_eq(&self, value: &(dyn Reflect + 'static)) -> Option<bool>
fn reflect_partial_eq(&self, value: &(dyn Reflect + 'static)) -> Option<bool>
§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
§impl<A> TryFrom<UntypedHandle> for Handle<A>where
A: Asset,
impl<A> TryFrom<UntypedHandle> for Handle<A>where A: Asset,
§type Error = UntypedAssetConversionError
type Error = UntypedAssetConversionError
§fn try_from(
value: UntypedHandle
) -> Result<Handle<A>, <Handle<A> as TryFrom<UntypedHandle>>::Error>
fn try_from( value: UntypedHandle ) -> Result<Handle<A>, <Handle<A> as TryFrom<UntypedHandle>>::Error>
§impl<A> TypePath for Handle<A>where
A: Asset + TypePath,
Arc<StrongHandle, Global>: FromReflect,
AssetId<A>: FromReflect,
impl<A> TypePath for Handle<A>where A: Asset + TypePath, Arc<StrongHandle, Global>: FromReflect, AssetId<A>: FromReflect,
§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
§impl<A> Typed for Handle<A>where
A: Asset + TypePath,
Arc<StrongHandle, Global>: FromReflect,
AssetId<A>: FromReflect,
impl<A> Typed for Handle<A>where A: Asset + TypePath, Arc<StrongHandle, Global>: FromReflect, AssetId<A>: FromReflect,
§impl<A> VisitAssetDependencies for Handle<A>where
A: Asset,
impl<A> VisitAssetDependencies for Handle<A>where A: Asset,
fn visit_dependencies(&self, visit: &mut impl FnMut(UntypedAssetId))
impl<A> Eq for Handle<A>where A: Asset,
Auto Trait Implementations§
impl<A> !RefUnwindSafe for Handle<A>
impl<A> Send for Handle<A>
impl<A> Sync for Handle<A>
impl<A> Unpin for Handle<A>
impl<A> !UnwindSafe for Handle<A>
Blanket Implementations§
§impl<T, U> AsBindGroupShaderType<U> for Twhere
U: ShaderType,
&'a T: for<'a> Into<U>,
impl<T, U> AsBindGroupShaderType<U> for Twhere U: ShaderType, &'a T: for<'a> Into<U>,
§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere C: Component,
fn component_ids( components: &mut Components, storages: &mut Storages, ids: &mut impl FnMut(ComponentId) )
unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> Cwhere F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a, Aligned>,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
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
.§fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§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.§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.§impl<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere C: Component,
fn get_components( self, func: &mut impl FnMut(StorageType, OwningPtr<'_, Aligned>) )
§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere T: TypePath,
§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere T: Default,
§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self
using data from the given World
.§impl<T> GetPath for Twhere
T: Reflect + ?Sized,
impl<T> GetPath for Twhere T: Reflect + ?Sized,
§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>
) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p> ) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read more§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>
) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p> ) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read more§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>( &self, path: impl ReflectPath<'p> ) -> Result<&T, ReflectPathError<'p>>where T: Reflect,
path
. Read more§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>( &mut self, path: impl ReflectPath<'p> ) -> Result<&mut T, ReflectPathError<'p>>where T: Reflect,
path
. Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<R, P> ReadPrimitive<R> for Pwhere
R: Read + ReadEndian<P>,
P: Default,
impl<R, P> ReadPrimitive<R> for Pwhere R: Read + ReadEndian<P>, P: Default,
source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.