Trait shipyard::IntoIter [−][src]
pub trait IntoIter {
type IntoIter;
type IntoParIter;
fn iter(self) -> Self::IntoIter;
fn par_iter(self) -> Self::IntoParIter;
}
Expand description
Trait used to create iterators.
std::iter::IntoIterator
can’t be used directly because of conflicting implementation.
This trait serves as substitute.
Associated Types
type IntoParIter
Required methods
Returns an iterator over storages yielding only components meeting the requirements.
Example
use shipyard::{EntitiesViewMut, IntoIter, ViewMut, World};
let world = World::new();
world.run(
|mut entities: EntitiesViewMut, mut usizes: ViewMut<usize>, mut u32s: ViewMut<u32>| {
entities.add_entity((&mut usizes, &mut u32s), (0usize, 1u32));
entities.add_entity((&mut usizes, &mut u32s), (2usize, 3u32));
for (x, &y) in (&mut usizes, &u32s).iter() {
*x += y as usize;
}
},
);
fn par_iter(self) -> Self::IntoParIter
fn par_iter(self) -> Self::IntoParIter
Returns a parallel iterator over storages yielding only components meeting the requirements.
Iterators can only be made inside run closure and systems.
Example
use rayon::prelude::ParallelIterator;
use shipyard::{EntitiesViewMut, IntoIter, ThreadPoolView, ViewMut, World};
let world = World::new();
world.run(
|mut entities: EntitiesViewMut,
mut usizes: ViewMut<usize>,
mut u32s: ViewMut<u32>,
thread_pool: ThreadPoolView| {
entities.add_entity((&mut usizes, &mut u32s), (0usize, 1u32));
entities.add_entity((&mut usizes, &mut u32s), (2usize, 3u32));
thread_pool.install(|| {
(&mut usizes, &u32s).par_iter().for_each(|(x, &y)| {
*x += y as usize;
});
})
},
);