pub trait IntoIter: IntoShiperator {
// Required methods
fn iter(self) -> Shiperator<Self::Shiperator> ⓘ;
fn par_iter(self) -> ParShiperator<Self::Shiperator>;
}Expand description
Creates view iterators.
std::iter::IntoIterator can’t be used directly because of conflicting implementation.
This trait serves as substitute.
Required Methods§
Sourcefn iter(self) -> Shiperator<Self::Shiperator> ⓘ
fn iter(self) -> Shiperator<Self::Shiperator> ⓘ
§Example
use shipyard::{Component, EntitiesViewMut, IntoIter, ViewMut, World};
#[derive(Component, Clone, Copy)]
struct U32(u32);
#[derive(Component)]
struct USIZE(usize);
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), (USIZE(0), U32(1)));
entities.add_entity((&mut usizes, &mut u32s), (USIZE(2), U32(3)));
(&mut usizes, &u32s).iter().for_each(|(mut x, &y)| {
x.0 += y.0 as usize;
});Sourcefn par_iter(self) -> ParShiperator<Self::Shiperator>
Available on crate feature parallel only.
fn par_iter(self) -> ParShiperator<Self::Shiperator>
parallel only.§Example
use rayon::prelude::ParallelIterator;
use shipyard::{Component, EntitiesViewMut, IntoIter, ViewMut, World};
#[derive(Component, Clone, Copy)]
struct U32(u32);
#[derive(Component)]
struct USIZE(usize);
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), (USIZE(0), U32(1)));
entities.add_entity((&mut usizes, &mut u32s), (USIZE(2), U32(3)));
(&mut usizes, &u32s).par_iter().for_each(|(mut x, &y)| {
x.0 += y.0 as usize;
});Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.