pub unsafe trait LendJoin: for<'next> LendJoinඞType<'next> {
    type Value;
    type Mask: BitSetLike;

    // Required methods
    unsafe fn open(self) -> (Self::Mask, Self::Value);
    unsafe fn get<'next>(value: &'next mut Self::Value, id: u32) -> Self::T;

    // Provided methods
    fn lend_join(self) -> JoinLendIter<Self>
       where Self: Sized { ... }
    fn maybe(self) -> MaybeJoin<Self>
       where Self: Sized { ... }
    fn is_unconstrained() -> bool { ... }
}
Expand description

Like the Join trait except this is similar to a lending iterator in that only one item can be accessed at once.

The type returned from .lend_join(), [JoinLendIter] does not implement Iterator like JoinIter does. Instead, it provides a next method that exclusively borrows the JoinLendIter for the lifetime of the returned value.

This limitation allows freedom for more patterns to be soundly implemented. Thus, LendJoin acts as the “lowest common denominator” of the Join-like traits (i.e. if something can implement Join it can also implement LendJoin).

In particular, Entries only implements LendJoin. As another example, RestrictedStorage implements both Join and LendJoin. However, for joining mutably, lend join variant produces PairedStorageWriteExclusive values which have get_other/get_other_mut methods that aren’t provided by PairedStorageWriteShared.

Finally, these limitations allow providing the [JoinLendIter::get] method which can be useful to get a set of components from an entity without calling get individually on each storage (see the example in that method’s docs).

Also see the lend_join example.

Safety

The Self::Mask value returned with the Self::Value must correspond such that it is safe to retrieve items from Self::Value whose presence is indicated in the mask. As part of this, BitSetLike::iter must not produce an iterator that repeats an Index value if the LendJoin::get impl relies on not being called twice with the same Index.

Required Associated Types§

type Value

Type of joined storages.

type Mask: BitSetLike

Type of joined bit mask.

Required Methods§

unsafe fn open(self) -> (Self::Mask, Self::Value)

Open this join by returning the mask and the storages.

Safety

This is unsafe because implementations of this trait can permit the Value to be mutated independently of the Mask. If the Mask does not correctly report the status of the Value then illegal memory access can occur.

unsafe fn get<'next>(value: &'next mut Self::Value, id: u32) -> Self::T

Get a joined component value by a given index.

Safety
  • A call to get must be preceded by a check if id is part of Self::Mask
  • Multiple calls with the same id are not allowed, for a particular instance of the values from open. Unless this type implements the unsafe trait [RepeatableLendGet].

Provided Methods§

fn lend_join(self) -> JoinLendIter<Self>
where Self: Sized,

Create a joined lending iterator over the contents.

fn maybe(self) -> MaybeJoin<Self>
where Self: Sized,

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.

To join over and optional component mutably this pattern can be used: (&mut storage).maybe().

WARNING: Do not have a join of only MaybeJoins. Otherwise the join will iterate over every single index of the bitset. If you want a join with all MaybeJoins, add an EntitiesRes to the join as well to bound the join to all entities that are alive.

struct ExampleSystem;
impl<'a> System<'a> for ExampleSystem {
    type SystemData = (
        WriteStorage<'a, Pos>,
        ReadStorage<'a, Vel>,
    );
    fn run(&mut self, (mut positions, velocities): Self::SystemData) {
        let mut join = (&mut positions, velocities.maybe()).lend_join();
        while let Some ((mut position, maybe_velocity)) = join.next() {
            if let Some(velocity) = maybe_velocity {
                position.x += velocity.x;
                position.y += velocity.y;
            }
        }
    }
}

fn main() {
    let mut world = World::new();
    let mut dispatcher = DispatcherBuilder::new()
        .with(ExampleSystem, "example_system", &[])
        .build();

    dispatcher.setup(&mut world);

    let e1 = world.create_entity()
        .with(Pos { x: 0, y: 0 })
        .with(Vel { x: 5, y: 2 })
        .build();

    let e2 = world.create_entity()
        .with(Pos { x: 0, y: 0 })
        .build();

    dispatcher.dispatch(&mut world);

    let positions = world.read_storage::<Pos>();
    assert_eq!(positions.get(e1), Some(&Pos { x: 5, y: 2 }));
    assert_eq!(positions.get(e2), Some(&Pos { x: 0, y: 0 }));
}

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.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

§

impl LendJoin for AtomicBitSet

§

type Value = ()

§

type Mask = AtomicBitSet

§

unsafe fn open( self ) -> (<AtomicBitSet as LendJoin>::Mask, <AtomicBitSet as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <AtomicBitSet as LendJoin>::Value, id: u32 ) -> <AtomicBitSet as LendJoinඞType<'next>>::T

§

impl LendJoin for BitSet

§

type Value = ()

§

type Mask = BitSet

§

unsafe fn open( self ) -> (<BitSet as LendJoin>::Mask, <BitSet as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <BitSet as LendJoin>::Value, id: u32 ) -> <BitSet as LendJoinඞType<'next>>::T

§

impl<'a> LendJoin for &'a AtomicBitSet

§

type Value = ()

§

type Mask = &'a AtomicBitSet

§

unsafe fn open( self ) -> (<&'a AtomicBitSet as LendJoin>::Mask, <&'a AtomicBitSet as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <&'a AtomicBitSet as LendJoin>::Value, id: u32 ) -> <&'a AtomicBitSet as LendJoinඞType<'next>>::T

§

impl<'a> LendJoin for &'a BitSet

§

type Value = ()

§

type Mask = &'a BitSet

§

unsafe fn open( self ) -> (<&'a BitSet as LendJoin>::Mask, <&'a BitSet as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <&'a BitSet as LendJoin>::Value, id: u32 ) -> <&'a BitSet as LendJoinඞType<'next>>::T

§

impl<'a> LendJoin for &'a dyn BitSetLike

§

type Value = ()

§

type Mask = &'a dyn BitSetLike

§

unsafe fn open( self ) -> (<&'a dyn BitSetLike as LendJoin>::Mask, <&'a dyn BitSetLike as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <&'a dyn BitSetLike as LendJoin>::Value, id: u32 ) -> <&'a dyn BitSetLike as LendJoinඞType<'next>>::T

§

impl<'a, 'b, T> LendJoin for &'a Fetch<'b, T>
where &'a T: LendJoin, T: Resource,

§

type Value = <&'a T as LendJoin>::Value

§

type Mask = <&'a T as LendJoin>::Mask

§

unsafe fn open( self ) -> (<&'a Fetch<'b, T> as LendJoin>::Mask, <&'a Fetch<'b, T> as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <&'a Fetch<'b, T> as LendJoin>::Value, i: u32 ) -> <&'a Fetch<'b, T> as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<'a, 'b, T> LendJoin for &'a Read<'b, T>
where &'a T: LendJoin, T: Resource,

§

type Value = <&'a T as LendJoin>::Value

§

type Mask = <&'a T as LendJoin>::Mask

§

unsafe fn open( self ) -> (<&'a Read<'b, T> as LendJoin>::Mask, <&'a Read<'b, T> as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <&'a Read<'b, T> as LendJoin>::Value, i: u32 ) -> <&'a Read<'b, T> as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<'a, 'b, T> LendJoin for &'a Read<'b, T, PanicHandler>
where &'a T: LendJoin, T: Resource,

§

type Value = <&'a T as LendJoin>::Value

§

type Mask = <&'a T as LendJoin>::Mask

§

unsafe fn open( self ) -> (<&'a Read<'b, T, PanicHandler> as LendJoin>::Mask, <&'a Read<'b, T, PanicHandler> as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <&'a Read<'b, T, PanicHandler> as LendJoin>::Value, i: u32 ) -> <&'a Read<'b, T, PanicHandler> as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<'a, 'b, T> LendJoin for &'a mut FetchMut<'b, T>
where &'a mut T: LendJoin, T: Resource,

§

type Value = <&'a mut T as LendJoin>::Value

§

type Mask = <&'a mut T as LendJoin>::Mask

§

unsafe fn open( self ) -> (<&'a mut FetchMut<'b, T> as LendJoin>::Mask, <&'a mut FetchMut<'b, T> as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <&'a mut FetchMut<'b, T> as LendJoin>::Value, i: u32 ) -> <&'a mut FetchMut<'b, T> as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<'a, 'b, T> LendJoin for &'a mut Write<'b, T>
where &'a mut T: LendJoin, T: Resource,

§

type Value = <&'a mut T as LendJoin>::Value

§

type Mask = <&'a mut T as LendJoin>::Mask

§

unsafe fn open( self ) -> (<&'a mut Write<'b, T> as LendJoin>::Mask, <&'a mut Write<'b, T> as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <&'a mut Write<'b, T> as LendJoin>::Value, i: u32 ) -> <&'a mut Write<'b, T> as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<'a, 'b, T> LendJoin for &'a mut Write<'b, T, PanicHandler>
where &'a mut T: LendJoin, T: Resource,

§

type Value = <&'a mut T as LendJoin>::Value

§

type Mask = <&'a mut T as LendJoin>::Mask

§

unsafe fn open( self ) -> (<&'a mut Write<'b, T, PanicHandler> as LendJoin>::Mask, <&'a mut Write<'b, T, PanicHandler> as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <&'a mut Write<'b, T, PanicHandler> as LendJoin>::Value, i: u32 ) -> <&'a mut Write<'b, T, PanicHandler> as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<'a, A> LendJoin for &'a BitSetNot<A>
where A: BitSetLike,

§

type Value = ()

§

type Mask = &'a BitSetNot<A>

§

unsafe fn open( self ) -> (<&'a BitSetNot<A> as LendJoin>::Mask, <&'a BitSetNot<A> as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <&'a BitSetNot<A> as LendJoin>::Value, id: u32 ) -> <&'a BitSetNot<A> as LendJoinඞType<'next>>::T

§

impl<'a, A, B> LendJoin for &'a BitSetAnd<A, B>
where A: BitSetLike, B: BitSetLike,

§

type Value = ()

§

type Mask = &'a BitSetAnd<A, B>

§

unsafe fn open( self ) -> (<&'a BitSetAnd<A, B> as LendJoin>::Mask, <&'a BitSetAnd<A, B> as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <&'a BitSetAnd<A, B> as LendJoin>::Value, id: u32 ) -> <&'a BitSetAnd<A, B> as LendJoinඞType<'next>>::T

§

impl<'a, A, B> LendJoin for &'a BitSetOr<A, B>
where A: BitSetLike, B: BitSetLike,

§

type Value = ()

§

type Mask = &'a BitSetOr<A, B>

§

unsafe fn open( self ) -> (<&'a BitSetOr<A, B> as LendJoin>::Mask, <&'a BitSetOr<A, B> as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <&'a BitSetOr<A, B> as LendJoin>::Value, id: u32 ) -> <&'a BitSetOr<A, B> as LendJoinඞType<'next>>::T

§

impl<A> LendJoin for (A,)
where A: LendJoin, (<A as LendJoin>::Mask,): BitAnd,

§

type Value = (<A as LendJoin>::Value,)

§

type Mask = <(<A as LendJoin>::Mask,) as BitAnd>::Value

§

unsafe fn open(self) -> (<(A,) as LendJoin>::Mask, <(A,) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A,) as LendJoin>::Value, i: u32 ) -> <(A,) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A> LendJoin for BitSetNot<A>
where A: BitSetLike,

§

type Value = ()

§

type Mask = BitSetNot<A>

§

unsafe fn open( self ) -> (<BitSetNot<A> as LendJoin>::Mask, <BitSetNot<A> as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <BitSetNot<A> as LendJoin>::Value, id: u32 ) -> <BitSetNot<A> as LendJoinඞType<'next>>::T

§

impl<A, B> LendJoin for (A, B)
where A: LendJoin, B: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B) as LendJoin>::Mask, <(A, B) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B) as LendJoin>::Value, i: u32 ) -> <(A, B) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B> LendJoin for BitSetAnd<A, B>
where A: BitSetLike, B: BitSetLike,

§

type Value = ()

§

type Mask = BitSetAnd<A, B>

§

unsafe fn open( self ) -> (<BitSetAnd<A, B> as LendJoin>::Mask, <BitSetAnd<A, B> as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <BitSetAnd<A, B> as LendJoin>::Value, id: u32 ) -> <BitSetAnd<A, B> as LendJoinඞType<'next>>::T

§

impl<A, B> LendJoin for BitSetOr<A, B>
where A: BitSetLike, B: BitSetLike,

§

type Value = ()

§

type Mask = BitSetOr<A, B>

§

unsafe fn open( self ) -> (<BitSetOr<A, B> as LendJoin>::Mask, <BitSetOr<A, B> as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <BitSetOr<A, B> as LendJoin>::Value, id: u32 ) -> <BitSetOr<A, B> as LendJoinඞType<'next>>::T

§

impl<A, B> LendJoin for BitSetXor<A, B>
where A: BitSetLike, B: BitSetLike,

§

type Value = ()

§

type Mask = BitSetXor<A, B>

§

unsafe fn open( self ) -> (<BitSetXor<A, B> as LendJoin>::Mask, <BitSetXor<A, B> as LendJoin>::Value)

§

unsafe fn get<'next>( _: &'next mut <BitSetXor<A, B> as LendJoin>::Value, id: u32 ) -> <BitSetXor<A, B> as LendJoinඞType<'next>>::T

§

impl<A, B, C> LendJoin for (A, B, C)
where A: LendJoin, B: LendJoin, C: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C) as LendJoin>::Mask, <(A, B, C) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C) as LendJoin>::Value, i: u32 ) -> <(A, B, C) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D> LendJoin for (A, B, C, D)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D) as LendJoin>::Mask, <(A, B, C, D) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E> LendJoin for (A, B, C, D, E)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E) as LendJoin>::Mask, <(A, B, C, D, E) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F> LendJoin for (A, B, C, D, E, F)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F) as LendJoin>::Mask, <(A, B, C, D, E, F) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G> LendJoin for (A, B, C, D, E, F, G)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G) as LendJoin>::Mask, <(A, B, C, D, E, F, G) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H> LendJoin for (A, B, C, D, E, F, G, H)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H, I> LendJoin for (A, B, C, D, E, F, G, H, I)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, I: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value, <I as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H, I) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H, I) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H, I) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H, I) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H, I, J> LendJoin for (A, B, C, D, E, F, G, H, I, J)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, I: LendJoin, J: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value, <I as LendJoin>::Value, <J as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H, I, J) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H, I, J) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H, I, J) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H, I, J) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H, I, J, K> LendJoin for (A, B, C, D, E, F, G, H, I, J, K)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, I: LendJoin, J: LendJoin, K: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value, <I as LendJoin>::Value, <J as LendJoin>::Value, <K as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H, I, J, K) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H, I, J, K) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H, I, J, K) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H, I, J, K) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H, I, J, K, L> LendJoin for (A, B, C, D, E, F, G, H, I, J, K, L)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, I: LendJoin, J: LendJoin, K: LendJoin, L: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value, <I as LendJoin>::Value, <J as LendJoin>::Value, <K as LendJoin>::Value, <L as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H, I, J, K, L) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H, I, J, K, L) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H, I, J, K, L) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H, I, J, K, L) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M> LendJoin for (A, B, C, D, E, F, G, H, I, J, K, L, M)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, I: LendJoin, J: LendJoin, K: LendJoin, L: LendJoin, M: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value, <I as LendJoin>::Value, <J as LendJoin>::Value, <K as LendJoin>::Value, <L as LendJoin>::Value, <M as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H, I, J, K, L, M) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H, I, J, K, L, M) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H, I, J, K, L, M) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H, I, J, K, L, M) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N> LendJoin for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, I: LendJoin, J: LendJoin, K: LendJoin, L: LendJoin, M: LendJoin, N: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask, <N as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value, <I as LendJoin>::Value, <J as LendJoin>::Value, <K as LendJoin>::Value, <L as LendJoin>::Value, <M as LendJoin>::Value, <N as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask, <N as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H, I, J, K, L, M, N) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H, I, J, K, L, M, N) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H, I, J, K, L, M, N) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H, I, J, K, L, M, N) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> LendJoin for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, I: LendJoin, J: LendJoin, K: LendJoin, L: LendJoin, M: LendJoin, N: LendJoin, O: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask, <N as LendJoin>::Mask, <O as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value, <I as LendJoin>::Value, <J as LendJoin>::Value, <K as LendJoin>::Value, <L as LendJoin>::Value, <M as LendJoin>::Value, <N as LendJoin>::Value, <O as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask, <N as LendJoin>::Mask, <O as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P> LendJoin for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, I: LendJoin, J: LendJoin, K: LendJoin, L: LendJoin, M: LendJoin, N: LendJoin, O: LendJoin, P: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask, <N as LendJoin>::Mask, <O as LendJoin>::Mask, <P as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value, <I as LendJoin>::Value, <J as LendJoin>::Value, <K as LendJoin>::Value, <L as LendJoin>::Value, <M as LendJoin>::Value, <N as LendJoin>::Value, <O as LendJoin>::Value, <P as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask, <N as LendJoin>::Mask, <O as LendJoin>::Mask, <P as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q> LendJoin for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, I: LendJoin, J: LendJoin, K: LendJoin, L: LendJoin, M: LendJoin, N: LendJoin, O: LendJoin, P: LendJoin, Q: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask, <N as LendJoin>::Mask, <O as LendJoin>::Mask, <P as LendJoin>::Mask, <Q as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value, <I as LendJoin>::Value, <J as LendJoin>::Value, <K as LendJoin>::Value, <L as LendJoin>::Value, <M as LendJoin>::Value, <N as LendJoin>::Value, <O as LendJoin>::Value, <P as LendJoin>::Value, <Q as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask, <N as LendJoin>::Mask, <O as LendJoin>::Mask, <P as LendJoin>::Mask, <Q as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

§

impl<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R> LendJoin for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)
where A: LendJoin, B: LendJoin, C: LendJoin, D: LendJoin, E: LendJoin, F: LendJoin, G: LendJoin, H: LendJoin, I: LendJoin, J: LendJoin, K: LendJoin, L: LendJoin, M: LendJoin, N: LendJoin, O: LendJoin, P: LendJoin, Q: LendJoin, R: LendJoin, (<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask, <N as LendJoin>::Mask, <O as LendJoin>::Mask, <P as LendJoin>::Mask, <Q as LendJoin>::Mask, <R as LendJoin>::Mask): BitAnd,

§

type Value = (<A as LendJoin>::Value, <B as LendJoin>::Value, <C as LendJoin>::Value, <D as LendJoin>::Value, <E as LendJoin>::Value, <F as LendJoin>::Value, <G as LendJoin>::Value, <H as LendJoin>::Value, <I as LendJoin>::Value, <J as LendJoin>::Value, <K as LendJoin>::Value, <L as LendJoin>::Value, <M as LendJoin>::Value, <N as LendJoin>::Value, <O as LendJoin>::Value, <P as LendJoin>::Value, <Q as LendJoin>::Value, <R as LendJoin>::Value)

§

type Mask = <(<A as LendJoin>::Mask, <B as LendJoin>::Mask, <C as LendJoin>::Mask, <D as LendJoin>::Mask, <E as LendJoin>::Mask, <F as LendJoin>::Mask, <G as LendJoin>::Mask, <H as LendJoin>::Mask, <I as LendJoin>::Mask, <J as LendJoin>::Mask, <K as LendJoin>::Mask, <L as LendJoin>::Mask, <M as LendJoin>::Mask, <N as LendJoin>::Mask, <O as LendJoin>::Mask, <P as LendJoin>::Mask, <Q as LendJoin>::Mask, <R as LendJoin>::Mask) as BitAnd>::Value

§

unsafe fn open( self ) -> (<(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R) as LendJoin>::Mask, <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R) as LendJoin>::Value)

§

unsafe fn get<'next>( v: &'next mut <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R) as LendJoin>::Value, i: u32 ) -> <(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R) as LendJoinඞType<'next>>::T

§

fn is_unconstrained() -> bool

Implementors§

§

impl<'a> LendJoin for &'a EntitiesRes

§

type Mask = BitSetOr<&'a BitSet, &'a AtomicBitSet>

§

type Value = &'a EntitiesRes

§

impl<'a> LendJoin for AntiStorage<'a>

§

type Mask = BitSetNot<&'a BitSet>

§

type Value = ()

§

impl<'a, 'b, T, D> LendJoin for Entries<'a, 'b, T, D>
where 'b: 'a, T: 'a + Component, D: 'a + DerefMut<Target = MaskedStorage<T>>,

§

type Mask = BitSetAll

§

type Value = &'a mut Storage<'b, T, D>

§

impl<'a, 'e, T, D> LendJoin for &'a Storage<'e, T, D>
where T: Component, D: Deref<Target = MaskedStorage<T>>,

§

type Mask = &'a BitSet

§

type Value = &'a <T as Component>::Storage

§

impl<'a, 'e, T, D> LendJoin for &'a mut Storage<'e, T, D>
where T: Component, D: DerefMut<Target = MaskedStorage<T>>,

§

type Mask = &'a BitSet

§

type Value = &'a mut <T as Component>::Storage

§

impl<'a, T> LendJoin for &'a ChangeSet<T>

§

type Mask = &'a BitSet

§

type Value = &'a DenseVecStorage<T>

§

impl<'a, T> LendJoin for &'a mut ChangeSet<T>

§

type Mask = &'a BitSet

§

type Value = &'a mut DenseVecStorage<T>

§

impl<'rf, C, S> LendJoin for &'rf RestrictedStorage<'rf, C, S>
where C: Component, S: Borrow<<C as Component>::Storage>,

§

type Mask = &'rf BitSet

§

type Value = (&'rf <C as Component>::Storage, &'rf Fetch<'rf, EntitiesRes>, &'rf BitSet)

§

impl<'rf, C, S> LendJoin for &'rf mut RestrictedStorage<'rf, C, S>
where C: Component, S: BorrowMut<<C as Component>::Storage>,

§

type Mask = &'rf BitSet

§

type Value = (&'rf mut <C as Component>::Storage, &'rf Fetch<'rf, EntitiesRes>, &'rf BitSet)

§

impl<T> LendJoin for ChangeSet<T>

A Join implementation for ChangeSet that simply removes all the entries on a call to get.

§

type Mask = BitSet

§

type Value = DenseVecStorage<T>

§

impl<T> LendJoin for MaybeJoin<T>
where T: LendJoin,

§

type Mask = BitSetAll

§

type Value = (<T as LendJoin>::Mask, <T as LendJoin>::Value)