pub struct MaybeLocation<T: ?Sized = &'static Location<'static>> { /* 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) -> Selfwhere
T: Copy,
pub const fn new(_value: T) -> Selfwhere
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) -> Self
pub fn new_with(_f: impl FnOnce() -> T) -> Self
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>>) -> Self
pub fn new_with_flattened(_f: impl FnOnce() -> Option<MaybeLocation<T>>) -> Self
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: ?Sized> MaybeLocation<T>
impl<T: ?Sized> MaybeLocation<T>
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::Target>where
T: Deref,
pub fn as_deref(&self) -> MaybeLocation<&T::Target>where
T: Deref,
Converts from &MaybeLocation<T>
to MaybeLocation<&T::Target>
.
Sourcepub fn as_deref_mut(&mut self) -> MaybeLocation<&mut T::Target>where
T: DerefMut,
pub fn as_deref_mut(&mut self) -> MaybeLocation<&mut T::Target>where
T: DerefMut,
Converts from &mut MaybeLocation<T>
to MaybeLocation<&mut T::Target>
.
Source§impl MaybeLocation
impl MaybeLocation
Trait Implementations§
Source§impl<T: Clone + ?Sized> Clone for MaybeLocation<T>
impl<T: Clone + ?Sized> 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: Display> Display for MaybeLocation<T>
impl<T: Display> Display for MaybeLocation<T>
Source§impl<T> FromReflect for MaybeLocation<T>
impl<T> FromReflect for MaybeLocation<T>
Source§fn from_reflect(reflect: &dyn PartialReflect) -> Option<Self>
fn from_reflect(reflect: &dyn PartialReflect) -> Option<Self>
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: Ord + ?Sized> Ord for MaybeLocation<T>
impl<T: Ord + ?Sized> 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: PartialOrd + ?Sized> PartialOrd for MaybeLocation<T>
impl<T: PartialOrd + ?Sized> PartialOrd for MaybeLocation<T>
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) -> Result<(), ApplyError>
fn try_apply(&mut self, value: &dyn PartialReflect) -> 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<Self>) -> ReflectOwned
fn reflect_owned(self: Box<Self>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<Self>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<Self>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&dyn Reflect>
fn try_as_reflect(&self) -> Option<&dyn Reflect>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
fn try_as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
Source§fn into_partial_reflect(self: Box<Self>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<Self>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &dyn PartialReflect
fn as_partial_reflect(&self) -> &dyn PartialReflect
Source§fn as_partial_reflect_mut(&mut self) -> &mut dyn PartialReflect
fn as_partial_reflect_mut(&mut self) -> &mut dyn PartialReflect
Source§fn reflect_partial_eq(&self, value: &dyn PartialReflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn PartialReflect) -> 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 as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any
. Read moreSource§fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
Source§fn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
Source§impl<T> Struct for MaybeLocation<T>
impl<T> Struct for MaybeLocation<T>
Source§fn field(&self, name: &str) -> Option<&dyn PartialReflect>
fn field(&self, name: &str) -> Option<&dyn PartialReflect>
name
as a &dyn PartialReflect
.Source§fn field_mut(&mut self, name: &str) -> Option<&mut dyn PartialReflect>
fn field_mut(&mut self, name: &str) -> Option<&mut dyn PartialReflect>
name
as a
&mut dyn PartialReflect
.Source§fn field_at(&self, index: usize) -> Option<&dyn PartialReflect>
fn field_at(&self, index: usize) -> Option<&dyn PartialReflect>
index
as a
&dyn PartialReflect
.Source§fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn PartialReflect>
fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn PartialReflect>
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 + ?Sized> Copy for MaybeLocation<T>
impl<T: Eq + ?Sized> Eq for MaybeLocation<T>
impl<T: ?Sized> StructuralPartialEq for MaybeLocation<T>
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> 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> DowncastSend for T
impl<T> DowncastSend 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 more