GridIter

Struct GridIter 

Source
pub struct GridIter<I: Iterator<Item = T>, T> { /* private fields */ }
Expand description

The Grid struct wraps an Iterator and provies two dimensional access over its contents.

Implementations§

Source§

impl<I: Iterator<Item = T>, T> GridIter<I, T>

Source

pub fn iter_col(self, column_index: usize) -> ColIter<I>


 // . x .
 // . x .
 // . x .

 use grid_iter::IntoGridIter;
 (0..25).into_grid_iter(5)
     .iter_col(3)
     .zip([3,8,13,18,23])
     .for_each(|(l, r)| assert!(l == r));
Source

pub fn iter_row(self, row_index: usize) -> RowIter<I>


 // . . .
 // x x x
 // . . .

 use grid_iter::IntoGridIter;
 (0..25).into_grid_iter(5)
     .iter_row(3)
     .zip(15..20)
     .for_each(|(l, r)| assert!(l == r));
Source

pub fn get( self, col_index: usize, row_index: usize, ) -> Option<<I as IntoIterator>::Item>


 // . . .
 // . x .
 // . . .

 use grid_iter::IntoGridIter;
 assert!((0..25).into_grid_iter(5)
     .get(2,2)==Some(12))
Source

pub fn get_kernel( self, column_index: usize, row_index: usize, ) -> Option<[<I as IntoIterator>::Item; 9]>

Source

pub fn position<P: FnMut(I::Item) -> bool>( self, pred: P, ) -> Option<(usize, usize)>

Source

pub fn iter_diag_fwd( self, column_index: usize, row_index: usize, ) -> DiagFwdIter<I>


 // . . 1
 // . 2 .
 // 3 . .

 use grid_iter::IntoGridIter;
 (0..25).into_grid_iter(5)
     .iter_diag_fwd(0,1)
     .zip([1,5])
     .for_each(|(l, r)| assert!(l == r));
 (0..25).into_grid_iter(5)
     .iter_diag_fwd(3,2)
     .zip([9,13,17,21])
     .for_each(|(l, r)| assert!(l == r));
 (0..25).into_grid_iter(5)
     .iter_diag_fwd(1,0)
     .zip([1,5])
     .for_each(|(l, r)| assert!(l == r));
Source

pub fn iter_diag_bwd( self, column_index: usize, row_index: usize, ) -> DiagBwdIter<I>


 // x . .
 // . x .
 // . . x

 use grid_iter::IntoGridIter;
 (0..25).into_grid_iter(5)
     .iter_diag_bwd(1,2)
     .zip([5,11,17,23])
     .for_each(|(l, r)| assert!(l == r));
 (0..25).into_grid_iter(5)
     .iter_diag_bwd(4,2)
     .zip([2,8,14])
     .for_each(|(l, r)| assert!(l == r));
 (0..25).into_grid_iter(5)
     .iter_diag_bwd(4,0)
     .zip([4])
     .for_each(|(l, r)| assert!(l == r));
Source§

impl<I: Iterator<Item = T> + Clone, T> GridIter<I, T>

Source

pub fn iter_rows(self) -> impl Iterator<Item = RowIter<I>>


 use grid_iter::IntoGridIter;
 assert!((0..25).into_grid_iter(5)
     .iter_rows()
     .flatten()
     .sum::<usize>()
     .eq(&(0..25).sum::<usize>()))
Source

pub fn iter_cols(self) -> impl Iterator<Item = ColIter<I>>


 use grid_iter::IntoGridIter;
 assert!((0..25).into_grid_iter(5)
     .iter_cols()
     .flatten()
     .sum::<usize>()
     .eq(&(0..25).sum::<usize>()))
Source

pub fn iter_diags_bwd(self) -> impl Iterator<Item = DiagBwdIter<I>>


 use grid_iter::IntoGridIter;
 assert!((0..25).into_grid_iter(5)
     .iter_diags_bwd()
     .flatten()
     .sum::<usize>()
     .eq(&(0..25).sum::<usize>()))
Source

pub fn iter_diags_fwd(self) -> impl Iterator<Item = DiagFwdIter<I>>


 use grid_iter::IntoGridIter;
 assert!((0..25).into_grid_iter(5)
     .iter_diags_fwd()
     .flatten()
     .sum::<usize>()
     .eq(&(0..25).sum::<usize>()))
Source

pub fn iter_kernels(self) -> impl Iterator<Item = [T; 9]>

Trait Implementations§

Source§

impl<I: Iterator<Item = T> + Clone, T> Clone for GridIter<I, T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<I: Debug + Iterator<Item = T>, T: Debug> Debug for GridIter<I, T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<I: Iterator<Item = T> + Clone, T: Display> Display for GridIter<I, T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<I: Copy + Iterator<Item = T>, T: Copy> Copy for GridIter<I, T>

Auto Trait Implementations§

§

impl<I, T> Freeze for GridIter<I, T>
where I: Freeze,

§

impl<I, T> RefUnwindSafe for GridIter<I, T>
where I: RefUnwindSafe,

§

impl<I, T> Send for GridIter<I, T>
where I: Send,

§

impl<I, T> Sync for GridIter<I, T>
where I: Sync,

§

impl<I, T> Unpin for GridIter<I, T>
where I: Unpin,

§

impl<I, T> UnwindSafe for GridIter<I, T>
where I: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.