pub enum Handle<A>where
A: Asset,{
Strong(Arc<StrongHandle>),
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>)
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§
Source§impl<A> Handle<A>where
A: Asset,
impl<A> Handle<A>where
A: Asset,
Sourcepub 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
.
Sourcepub 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
Sourcepub 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.
Sourcepub 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§
Source§impl<A> Enum for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl<A> Enum for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn field(&self, __name_param: &str) -> Option<&(dyn PartialReflect + 'static)>
fn field(&self, __name_param: &str) -> Option<&(dyn PartialReflect + 'static)>
Source§fn field_at(
&self,
__index_param: usize,
) -> Option<&(dyn PartialReflect + 'static)>
fn field_at( &self, __index_param: usize, ) -> Option<&(dyn PartialReflect + 'static)>
Source§fn field_mut(
&mut self,
__name_param: &str,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_mut( &mut self, __name_param: &str, ) -> Option<&mut (dyn PartialReflect + 'static)>
Source§fn field_at_mut(
&mut self,
__index_param: usize,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_at_mut( &mut self, __index_param: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>
Source§fn index_of(&self, __name_param: &str) -> Option<usize>
fn index_of(&self, __name_param: &str) -> Option<usize>
Source§fn name_at(&self, __index_param: usize) -> Option<&str>
fn name_at(&self, __index_param: usize) -> Option<&str>
Source§fn iter_fields(&self) -> VariantFieldIter<'_> ⓘ
fn iter_fields(&self) -> VariantFieldIter<'_> ⓘ
Source§fn variant_name(&self) -> &str
fn variant_name(&self) -> &str
Source§fn variant_index(&self) -> usize
fn variant_index(&self) -> usize
Source§fn variant_type(&self) -> VariantType
fn variant_type(&self) -> VariantType
fn clone_dynamic(&self) -> DynamicEnum
Source§fn is_variant(&self, variant_type: VariantType) -> bool
fn is_variant(&self, variant_type: VariantType) -> bool
Source§fn variant_path(&self) -> String
fn variant_path(&self) -> String
Source§impl<A> From<&Handle<A>> for UntypedAssetIdwhere
A: Asset,
impl<A> From<&Handle<A>> for UntypedAssetIdwhere
A: Asset,
Source§fn from(value: &Handle<A>) -> UntypedAssetId
fn from(value: &Handle<A>) -> UntypedAssetId
Source§impl<A> From<&mut Handle<A>> for UntypedAssetIdwhere
A: Asset,
impl<A> From<&mut Handle<A>> for UntypedAssetIdwhere
A: Asset,
Source§fn from(value: &mut Handle<A>) -> UntypedAssetId
fn from(value: &mut Handle<A>) -> UntypedAssetId
Source§impl<A> From<Handle<A>> for UntypedHandlewhere
A: Asset,
impl<A> From<Handle<A>> for UntypedHandlewhere
A: Asset,
Source§fn from(value: Handle<A>) -> UntypedHandle
fn from(value: Handle<A>) -> UntypedHandle
Source§impl<M> From<Handle<M>> for MeshMaterial3d<M>where
M: Material,
impl<M> From<Handle<M>> for MeshMaterial3d<M>where
M: Material,
Source§fn from(value: Handle<M>) -> MeshMaterial3d<M>
fn from(value: Handle<M>) -> MeshMaterial3d<M>
Source§impl<A> FromReflect for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl<A> FromReflect for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn from_reflect(__param0: &(dyn PartialReflect + 'static)) -> Option<Handle<A>>
fn from_reflect(__param0: &(dyn PartialReflect + 'static)) -> Option<Handle<A>>
Self
from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read moreSource§impl<A> FromType<Handle<A>> for ReflectHandlewhere
A: Asset,
impl<A> FromType<Handle<A>> for ReflectHandlewhere
A: Asset,
fn from_type() -> ReflectHandle
Source§impl<A> GetTypeRegistration for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl<A> GetTypeRegistration for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration
for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl<A> Ord for Handle<A>where
A: Asset,
impl<A> Ord for Handle<A>where
A: Asset,
Source§impl<A> PartialOrd<Handle<A>> for UntypedHandlewhere
A: Asset,
impl<A> PartialOrd<Handle<A>> for UntypedHandlewhere
A: Asset,
Source§impl<A> PartialOrd<UntypedHandle> for Handle<A>where
A: Asset,
impl<A> PartialOrd<UntypedHandle> for Handle<A>where
A: Asset,
Source§impl<A> PartialOrd for Handle<A>where
A: Asset,
impl<A> PartialOrd for Handle<A>where
A: Asset,
Source§impl<A> PartialReflect for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl<A> PartialReflect for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn clone_value(&self) -> Box<dyn PartialReflect>
fn clone_value(&self) -> Box<dyn PartialReflect>
Reflect
trait object. Read moreSource§fn try_apply(
&mut self,
__value_param: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, __value_param: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<Handle<A>>) -> ReflectOwned
fn reflect_owned(self: Box<Handle<A>>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<Handle<A>>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<Handle<A>>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
Source§fn into_partial_reflect(self: Box<Handle<A>>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<Handle<A>>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
Source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
Source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn reflect_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl<A> Reflect for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl<A> Reflect for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§fn into_any(self: Box<Handle<A>>) -> Box<dyn Any>
fn into_any(self: Box<Handle<A>>) -> Box<dyn Any>
Box<dyn Any>
. Read moreSource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any
. Read moreSource§fn into_reflect(self: Box<Handle<A>>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Handle<A>>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
Source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
Source§impl<A> TryFrom<UntypedHandle> for Handle<A>where
A: Asset,
impl<A> TryFrom<UntypedHandle> for Handle<A>where
A: Asset,
Source§type Error = UntypedAssetConversionError
type Error = UntypedAssetConversionError
Source§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>
Source§impl<A> TypePath for Handle<A>
impl<A> TypePath for Handle<A>
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Source§impl<A> Typed for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
impl<A> Typed for Handle<A>where
A: Asset + TypePath,
Handle<A>: Any + Send + Sync,
Arc<StrongHandle>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
AssetId<A>: FromReflect + TypePath + MaybeTyped + RegisterForReflection,
Source§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> Freeze for Handle<A>
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§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
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
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info
.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§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 moreSource§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 moreSource§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