Expand description
Trait used to create iterators.
Yields &mut T
for mutable components. Does not work with storage tracking modification.
std::iter::IntoIterator
can’t be used directly because of conflicting implementation.
This trait serves as substitute.
Returns an iterator over SparseSet
.
Panics if one of the storage is tracking modification.
You can check if a SparseSet
is tracking modification with SparseSet::is_tracking_modification
.
iter
can be used for storage tracking modification.
use shipyard::{EntitiesViewMut, IntoFastIter, ViewMut, World};
let world = World::new();
let (mut entities, mut usizes, mut u32s) = world.borrow::<(EntitiesViewMut, ViewMut<usize>, ViewMut<u32>)>().unwrap();
entities.add_entity((&mut usizes, &mut u32s), (0usize, 1u32));
entities.add_entity((&mut usizes, &mut u32s), (2usize, 3u32));
(&mut usizes, &u32s).fast_iter().for_each(|(x, &y)| {
*x += y as usize;
});
Returns an iterator over SparseSet
, its order is based on D
.
Panics if one of the storage is tracking modification.
You can check if a SparseSet
is tracking modification with SparseSet::is_tracking_modification
.
iter_by
can be used for storage tracking modification.
Returns a parallel iterator over SparseSet
.
Panics if one of the storage is tracking modification.
You can check if a SparseSet
is tracking modification with SparseSet::is_tracking_modification
.
par_iter
can be used for storage tracking modification.
use rayon::prelude::ParallelIterator;
use shipyard::{EntitiesViewMut, IntoFastIter, ViewMut, World};
let world = World::new();
let (mut entities, mut usizes, mut u32s) = world.borrow::<(EntitiesViewMut, ViewMut<usize>, ViewMut<u32>)>().unwrap();
entities.add_entity((&mut usizes, &mut u32s), (0usize, 1u32));
entities.add_entity((&mut usizes, &mut u32s), (2usize, 3u32));
(&mut usizes, &u32s).fast_par_iter().for_each(|(x, &y)| {
*x += y as usize;
});
sourceimpl<A, B, C, D> IntoFastIter for (A, B, C, D) where
A: IntoAbstract,
B: IntoAbstract,
C: IntoAbstract,
D: IntoAbstract,
<A as IntoAbstract>::AbsView: FastAbstractMut,
<B as IntoAbstract>::AbsView: FastAbstractMut,
<C as IntoAbstract>::AbsView: FastAbstractMut,
<D as IntoAbstract>::AbsView: FastAbstractMut,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
sourceimpl<A, B, C, D, E, F> IntoFastIter for (A, B, C, D, E, F) where
A: IntoAbstract,
B: IntoAbstract,
C: IntoAbstract,
D: IntoAbstract,
E: IntoAbstract,
F: IntoAbstract,
<A as IntoAbstract>::AbsView: FastAbstractMut,
<B as IntoAbstract>::AbsView: FastAbstractMut,
<C as IntoAbstract>::AbsView: FastAbstractMut,
<D as IntoAbstract>::AbsView: FastAbstractMut,
<E as IntoAbstract>::AbsView: FastAbstractMut,
<F as IntoAbstract>::AbsView: FastAbstractMut,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<F as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<F as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
sourceimpl<A, B, C, D, E, F, G> IntoFastIter for (A, B, C, D, E, F, G) where
A: IntoAbstract,
B: IntoAbstract,
C: IntoAbstract,
D: IntoAbstract,
E: IntoAbstract,
F: IntoAbstract,
G: IntoAbstract,
<A as IntoAbstract>::AbsView: FastAbstractMut,
<B as IntoAbstract>::AbsView: FastAbstractMut,
<C as IntoAbstract>::AbsView: FastAbstractMut,
<D as IntoAbstract>::AbsView: FastAbstractMut,
<E as IntoAbstract>::AbsView: FastAbstractMut,
<F as IntoAbstract>::AbsView: FastAbstractMut,
<G as IntoAbstract>::AbsView: FastAbstractMut,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<F as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<F as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<G as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<G as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
sourceimpl<T> IntoFastIter for (T,) where
T: IntoAbstract,
<T as IntoAbstract>::AbsView: FastAbstractMut,
<<T as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<T as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
sourceimpl<A, B, C> IntoFastIter for (A, B, C) where
A: IntoAbstract,
B: IntoAbstract,
C: IntoAbstract,
<A as IntoAbstract>::AbsView: FastAbstractMut,
<B as IntoAbstract>::AbsView: FastAbstractMut,
<C as IntoAbstract>::AbsView: FastAbstractMut,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
sourceimpl<A, B, C, D, E> IntoFastIter for (A, B, C, D, E) where
A: IntoAbstract,
B: IntoAbstract,
C: IntoAbstract,
D: IntoAbstract,
E: IntoAbstract,
<A as IntoAbstract>::AbsView: FastAbstractMut,
<B as IntoAbstract>::AbsView: FastAbstractMut,
<C as IntoAbstract>::AbsView: FastAbstractMut,
<D as IntoAbstract>::AbsView: FastAbstractMut,
<E as IntoAbstract>::AbsView: FastAbstractMut,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
sourceimpl<A, B, C, D, E, F, G, H> IntoFastIter for (A, B, C, D, E, F, G, H) where
A: IntoAbstract,
B: IntoAbstract,
C: IntoAbstract,
D: IntoAbstract,
E: IntoAbstract,
F: IntoAbstract,
G: IntoAbstract,
H: IntoAbstract,
<A as IntoAbstract>::AbsView: FastAbstractMut,
<B as IntoAbstract>::AbsView: FastAbstractMut,
<C as IntoAbstract>::AbsView: FastAbstractMut,
<D as IntoAbstract>::AbsView: FastAbstractMut,
<E as IntoAbstract>::AbsView: FastAbstractMut,
<F as IntoAbstract>::AbsView: FastAbstractMut,
<G as IntoAbstract>::AbsView: FastAbstractMut,
<H as IntoAbstract>::AbsView: FastAbstractMut,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<F as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<F as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<G as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<G as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<H as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<H as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
sourceimpl<A, B> IntoFastIter for (A, B) where
A: IntoAbstract,
B: IntoAbstract,
<A as IntoAbstract>::AbsView: FastAbstractMut,
<B as IntoAbstract>::AbsView: FastAbstractMut,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
sourceimpl<A, B, C, D, E, F, G, H, I, J> IntoFastIter for (A, B, C, D, E, F, G, H, I, J) where
A: IntoAbstract,
B: IntoAbstract,
C: IntoAbstract,
D: IntoAbstract,
E: IntoAbstract,
F: IntoAbstract,
G: IntoAbstract,
H: IntoAbstract,
I: IntoAbstract,
J: IntoAbstract,
<A as IntoAbstract>::AbsView: FastAbstractMut,
<B as IntoAbstract>::AbsView: FastAbstractMut,
<C as IntoAbstract>::AbsView: FastAbstractMut,
<D as IntoAbstract>::AbsView: FastAbstractMut,
<E as IntoAbstract>::AbsView: FastAbstractMut,
<F as IntoAbstract>::AbsView: FastAbstractMut,
<G as IntoAbstract>::AbsView: FastAbstractMut,
<H as IntoAbstract>::AbsView: FastAbstractMut,
<I as IntoAbstract>::AbsView: FastAbstractMut,
<J as IntoAbstract>::AbsView: FastAbstractMut,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<F as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<F as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<G as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<G as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<H as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<H as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<I as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<I as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<J as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<J as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
sourceimpl<A, B, C, D, E, F, G, H, I> IntoFastIter for (A, B, C, D, E, F, G, H, I) where
A: IntoAbstract,
B: IntoAbstract,
C: IntoAbstract,
D: IntoAbstract,
E: IntoAbstract,
F: IntoAbstract,
G: IntoAbstract,
H: IntoAbstract,
I: IntoAbstract,
<A as IntoAbstract>::AbsView: FastAbstractMut,
<B as IntoAbstract>::AbsView: FastAbstractMut,
<C as IntoAbstract>::AbsView: FastAbstractMut,
<D as IntoAbstract>::AbsView: FastAbstractMut,
<E as IntoAbstract>::AbsView: FastAbstractMut,
<F as IntoAbstract>::AbsView: FastAbstractMut,
<G as IntoAbstract>::AbsView: FastAbstractMut,
<H as IntoAbstract>::AbsView: FastAbstractMut,
<I as IntoAbstract>::AbsView: FastAbstractMut,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<A as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<B as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<C as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<D as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<E as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<F as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<F as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<G as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<G as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<H as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<H as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
<<I as IntoAbstract>::AbsView as AbstractMut>::Index: From<usize>,
<<I as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,
sourceimpl<T> IntoFastIter for T where
T: IntoAbstract,
<T as IntoAbstract>::AbsView: FastAbstractMut,
<<T as IntoAbstract>::AbsView as AbstractMut>::Index: Clone,