IntoIter

Trait IntoIter 

Source
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§

Source

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;
});
Source

fn par_iter(self) -> ParShiperator<Self::Shiperator>

Available on crate feature 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.

Implementors§