pub struct MaybeLocation<T = &'static Location<'static>>where
T: ?Sized,{ /* private fields */ }
Expand description
A value that contains a T
if the track_location
feature is enabled,
and is a ZST if it is not.
The overall API is similar to Option
, but whether the value is Some
or None
is set at compile
time and is the same for all values.
If the track_location
feature is disabled, then all functions on this type that return
an MaybeLocation
will have an empty body and should be removed by the optimizer.
This allows code to be written that will be checked by the compiler even when the feature is disabled, but that will be entirely removed during compilation.
Implementations§
Source§impl<T> MaybeLocation<T>
impl<T> MaybeLocation<T>
Sourcepub const fn new(_value: T) -> MaybeLocation<T>where
T: Copy,
pub const fn new(_value: T) -> MaybeLocation<T>where
T: Copy,
Constructs a new MaybeLocation
that wraps the given value.
This may only accept Copy
types,
since it needs to drop the value if the track_location
feature is disabled,
and non-Copy
types cannot be dropped in const
context.
Use new_with
if you need to construct a non-Copy
value.
§See also
new_with
to initialize using a closure.new_with_flattened
to initialize using a closure that returns anOption<MaybeLocation<T>>
.
Sourcepub fn new_with(_f: impl FnOnce() -> T) -> MaybeLocation<T>
pub fn new_with(_f: impl FnOnce() -> T) -> MaybeLocation<T>
Constructs a new MaybeLocation
that wraps the result of the given closure.
§See also
new
to initialize using a value.new_with_flattened
to initialize using a closure that returns anOption<MaybeLocation<T>>
.
Sourcepub fn map<U>(self, _f: impl FnOnce(T) -> U) -> MaybeLocation<U>
pub fn map<U>(self, _f: impl FnOnce(T) -> U) -> MaybeLocation<U>
Maps an MaybeLocation<T>
to MaybeLocation<U>
by applying a function to a contained value.
Sourcepub fn zip<U>(self, _other: MaybeLocation<U>) -> MaybeLocation<(T, U)>
pub fn zip<U>(self, _other: MaybeLocation<U>) -> MaybeLocation<(T, U)>
Converts a pair of MaybeLocation
values to an MaybeLocation
of a tuple.
Sourcepub fn unwrap_or_default(self) -> Twhere
T: Default,
pub fn unwrap_or_default(self) -> Twhere
T: Default,
Returns the contained value or a default.
If the track_location
feature is enabled, this always returns the contained value.
If it is disabled, this always returns T::Default()
.
Sourcepub fn into_option(self) -> Option<T>
pub fn into_option(self) -> Option<T>
Converts an MaybeLocation
to an Option
to allow run-time branching.
If the track_location
feature is enabled, this always returns Some
.
If it is disabled, this always returns None
.
Source§impl<T> MaybeLocation<Option<T>>
impl<T> MaybeLocation<Option<T>>
Sourcepub fn new_with_flattened(
_f: impl FnOnce() -> Option<MaybeLocation<T>>,
) -> MaybeLocation<Option<T>>
pub fn new_with_flattened( _f: impl FnOnce() -> Option<MaybeLocation<T>>, ) -> MaybeLocation<Option<T>>
Sourcepub fn transpose(self) -> Option<MaybeLocation<T>>
pub fn transpose(self) -> Option<MaybeLocation<T>>
Transposes a MaybeLocation
of an Option
into an Option
of a MaybeLocation
.
This can be useful if you want to use the ?
operator to exit early
if the track_location
feature is enabled but the value is not found.
If the track_location
feature is enabled,
this returns Some
if the inner value is Some
and None
if the inner value is None
.
If it is disabled, this always returns Some
.
§Example
let mut world = World::new();
let entity = world.spawn(()).id();
let location: MaybeLocation<Option<&'static Location<'static>>> =
world.entities().entity_get_spawned_or_despawned_by(entity);
let location: MaybeLocation<&'static Location<'static>> = location.transpose()?;
§See also
into_option
to convert to anOption<Option<T>>
. When used withOption::flatten
, this will have a similar effect, but will returnNone
when thetrack_location
feature is disabled.
Source§impl<T> MaybeLocation<&T>
impl<T> MaybeLocation<&T>
Sourcepub const fn copied(&self) -> MaybeLocation<T>where
T: Copy,
pub const fn copied(&self) -> MaybeLocation<T>where
T: Copy,
Maps an MaybeLocation<&T>
to an MaybeLocation<T>
by copying the contents.
Source§impl<T> MaybeLocation<&mut T>
impl<T> MaybeLocation<&mut T>
Sourcepub const fn copied(&self) -> MaybeLocation<T>where
T: Copy,
pub const fn copied(&self) -> MaybeLocation<T>where
T: Copy,
Maps an MaybeLocation<&mut T>
to an MaybeLocation<T>
by copying the contents.
Sourcepub fn assign(&mut self, _value: MaybeLocation<T>)
pub fn assign(&mut self, _value: MaybeLocation<T>)
Assigns the contents of an MaybeLocation<T>
to an MaybeLocation<&mut T>
.
Source§impl<T> MaybeLocation<T>where
T: ?Sized,
impl<T> MaybeLocation<T>where
T: ?Sized,
Sourcepub const fn as_ref(&self) -> MaybeLocation<&T>
pub const fn as_ref(&self) -> MaybeLocation<&T>
Converts from &MaybeLocation<T>
to MaybeLocation<&T>
.
Sourcepub const fn as_mut(&mut self) -> MaybeLocation<&mut T>
pub const fn as_mut(&mut self) -> MaybeLocation<&mut T>
Converts from &mut MaybeLocation<T>
to MaybeLocation<&mut T>
.
Sourcepub fn as_deref(&self) -> MaybeLocation<&<T as Deref>::Target>where
T: Deref,
pub fn as_deref(&self) -> MaybeLocation<&<T as Deref>::Target>where
T: Deref,
Converts from &MaybeLocation<T>
to MaybeLocation<&T::Target>
.
Sourcepub fn as_deref_mut(&mut self) -> MaybeLocation<&mut <T as Deref>::Target>where
T: DerefMut,
pub fn as_deref_mut(&mut self) -> MaybeLocation<&mut <T as Deref>::Target>where
T: DerefMut,
Converts from &mut MaybeLocation<T>
to MaybeLocation<&mut T::Target>
.
Source§impl MaybeLocation
impl MaybeLocation
Sourcepub fn caller() -> MaybeLocation
pub fn caller() -> MaybeLocation
Returns the source location of the caller of this function. If that function’s caller is annotated then its call location will be returned, and so on up the stack to the first call within a non-tracked function body.
Trait Implementations§
Source§impl<T> Clone for MaybeLocation<T>
impl<T> Clone for MaybeLocation<T>
Source§fn clone(&self) -> MaybeLocation<T>
fn clone(&self) -> MaybeLocation<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<T> Debug for MaybeLocation<T>
impl<T> Debug for MaybeLocation<T>
Source§impl<T> Display for MaybeLocation<T>where
T: Display,
impl<T> Display for MaybeLocation<T>where
T: Display,
Source§impl<T> FromReflect for MaybeLocation<T>
impl<T> FromReflect for MaybeLocation<T>
Source§fn from_reflect(
reflect: &(dyn PartialReflect + 'static),
) -> Option<MaybeLocation<T>>
fn from_reflect( reflect: &(dyn PartialReflect + 'static), ) -> Option<MaybeLocation<T>>
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<T> GetTypeRegistration for MaybeLocation<T>
impl<T> GetTypeRegistration for MaybeLocation<T>
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<T> Hash for MaybeLocation<T>
impl<T> Hash for MaybeLocation<T>
Source§impl<T> Ord for MaybeLocation<T>
impl<T> Ord for MaybeLocation<T>
Source§fn cmp(&self, other: &MaybeLocation<T>) -> Ordering
fn cmp(&self, other: &MaybeLocation<T>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<T> PartialEq for MaybeLocation<T>
impl<T> PartialEq for MaybeLocation<T>
Source§impl<T> PartialOrd for MaybeLocation<T>where
T: PartialOrd + ?Sized,
impl<T> PartialOrd for MaybeLocation<T>where
T: PartialOrd + ?Sized,
Source§impl<T> PartialReflect for MaybeLocation<T>
impl<T> PartialReflect for MaybeLocation<T>
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn try_apply(
&mut self,
value: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, value: &(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<MaybeLocation<T>>) -> ReflectOwned
fn reflect_owned(self: Box<MaybeLocation<T>>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<MaybeLocation<T>>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<MaybeLocation<T>>, ) -> 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<MaybeLocation<T>>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<MaybeLocation<T>>) -> 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_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Self
using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn clone_value(&self) -> Box<dyn PartialReflect>
fn clone_value(&self) -> Box<dyn PartialReflect>
reflect_clone
. To convert reflected values to dynamic ones, use to_dynamic
.Self
into its dynamic representation. Read moreSource§fn to_dynamic(&self) -> Box<dyn PartialReflect>
fn to_dynamic(&self) -> Box<dyn PartialReflect>
Source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl<T> Reflect for MaybeLocation<T>
impl<T> Reflect for MaybeLocation<T>
Source§fn into_any(self: Box<MaybeLocation<T>>) -> Box<dyn Any>
fn into_any(self: Box<MaybeLocation<T>>) -> 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<MaybeLocation<T>>) -> Box<dyn Reflect>
fn into_reflect(self: Box<MaybeLocation<T>>) -> 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<T> Struct for MaybeLocation<T>
impl<T> Struct for MaybeLocation<T>
Source§fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
name
as a &dyn PartialReflect
.Source§fn field_mut(
&mut self,
name: &str,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_mut( &mut self, name: &str, ) -> Option<&mut (dyn PartialReflect + 'static)>
name
as a
&mut dyn PartialReflect
.Source§fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
index
as a
&dyn PartialReflect
.Source§fn field_at_mut(
&mut self,
index: usize,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_at_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>
index
as a &mut dyn PartialReflect
.Source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
index
.Source§fn iter_fields(&self) -> FieldIter<'_> ⓘ
fn iter_fields(&self) -> FieldIter<'_> ⓘ
fn to_dynamic_struct(&self) -> DynamicStruct
Source§fn clone_dynamic(&self) -> DynamicStruct
fn clone_dynamic(&self) -> DynamicStruct
to_dynamic_struct
insteadDynamicStruct
.Source§fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
None
if TypeInfo
is not available.Source§impl<T> TypePath for MaybeLocation<T>
impl<T> TypePath for MaybeLocation<T>
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<T> Typed for MaybeLocation<T>
impl<T> Typed for MaybeLocation<T>
impl<T> Copy for MaybeLocation<T>
impl<T> Eq for MaybeLocation<T>
impl<T> StructuralPartialEq for MaybeLocation<T>where
T: ?Sized,
Auto Trait Implementations§
impl<T> Freeze for MaybeLocation<T>where
T: ?Sized,
impl<T> RefUnwindSafe for MaybeLocation<T>where
T: RefUnwindSafe + ?Sized,
impl<T> Send for MaybeLocation<T>
impl<T> Sync for MaybeLocation<T>
impl<T> Unpin for MaybeLocation<T>
impl<T> UnwindSafe for MaybeLocation<T>where
T: UnwindSafe + ?Sized,
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>
, which can then be
downcast
into Box<dyn 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>
, which 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> 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> DowncastSend for T
impl<T> DowncastSend for T
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§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere
S: Struct,
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