pub struct MaybeJoin<J>(pub J);
Expand description
Returns a structure that implements Join
/LendJoin
/MaybeJoin
if the
contained T
does and that yields all indices, returning None
for all
missing elements and Some(T)
for found elements.
For usage see LendJoin::maybe()
.
WARNING: Do not have a join of only MaybeJoin
s. Otherwise the join will
iterate over every single index of the bitset. If you want a join with
all MaybeJoin
s, add an EntitiesRes
to the join as well to bound the
join to all entities that are alive.
Tuple Fields§
§0: J
Trait Implementations§
source§impl<T> Join for MaybeJoin<T>where
T: Join,
impl<T> Join for MaybeJoin<T>where T: Join,
source§unsafe fn open(self) -> (Self::Mask, Self::Value)
unsafe fn open(self) -> (Self::Mask, Self::Value)
Open this join by returning the mask and the storages. Read more
source§unsafe fn get((mask, value): &mut Self::Value, id: Index) -> Self::Type
unsafe fn get((mask, value): &mut Self::Value, id: Index) -> Self::Type
Get a joined component value by a given index. Read more
source§fn is_unconstrained() -> bool
fn is_unconstrained() -> bool
If this
Join
typically returns all indices in the mask, then iterating
over only it or combined with other joins that are also dangerous will
cause the JoinIter
to go through all indices which is usually not what
is wanted and will kill performance.source§impl<T> LendJoin for MaybeJoin<T>where
T: LendJoin,
impl<T> LendJoin for MaybeJoin<T>where T: LendJoin,
source§unsafe fn open(self) -> (Self::Mask, Self::Value)
unsafe fn open(self) -> (Self::Mask, Self::Value)
Open this join by returning the mask and the storages. Read more
source§unsafe fn get<'next>(
(mask, value): &'next mut Self::Value,
id: Index
) -> <Self as LendJoinඞType<'next>>::T
unsafe fn get<'next>( (mask, value): &'next mut Self::Value, id: Index ) -> <Self as LendJoinඞType<'next>>::T
Get a joined component value by a given index. Read more
source§fn is_unconstrained() -> bool
fn is_unconstrained() -> bool
If this
LendJoin
typically returns all indices in the mask, then
iterating over only it or combined with other joins that are also
dangerous will cause the JoinLendIter
to go through all indices which
is usually not what is wanted and will kill performance.source§fn lend_join(self) -> JoinLendIter<Self>where
Self: Sized,
fn lend_join(self) -> JoinLendIter<Self>where Self: Sized,
Create a joined lending iterator over the contents.
source§impl<T> ParJoin for MaybeJoin<T>where
T: ParJoin,
impl<T> ParJoin for MaybeJoin<T>where T: ParJoin,
source§unsafe fn open(self) -> (Self::Mask, Self::Value)
unsafe fn open(self) -> (Self::Mask, Self::Value)
Open this join by returning the mask and the storages. Read more
source§unsafe fn get((mask, value): &Self::Value, id: Index) -> Self::Type
unsafe fn get((mask, value): &Self::Value, id: Index) -> Self::Type
Get a joined component value by a given index. Read more
source§fn is_unconstrained() -> bool
fn is_unconstrained() -> bool
If this
LendJoin
typically returns all indices in the mask, then
iterating over only it or combined with other joins that are also
dangerous will cause the JoinLendIter
to go through all indices which
is usually not what is wanted and will kill performance.source§fn par_join(self) -> JoinParIter<Self>where
Self: Sized,
fn par_join(self) -> JoinParIter<Self>where Self: Sized,
Create a joined parallel iterator over the contents.
impl<T> RepeatableLendGet for MaybeJoin<T>where T: RepeatableLendGet,
Auto Trait Implementations§
impl<J> RefUnwindSafe for MaybeJoin<J>where J: RefUnwindSafe,
impl<J> Send for MaybeJoin<J>where J: Send,
impl<J> Sync for MaybeJoin<J>where J: Sync,
impl<J> Unpin for MaybeJoin<J>where J: Unpin,
impl<J> UnwindSafe for MaybeJoin<J>where J: UnwindSafe,
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
Mutably borrows from an owned value. Read more