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>
impl<I: Iterator<Item = T>, T> GridIter<I, T>
Sourcepub fn iter_col(self, column_index: usize) -> ColIter<I>
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));
Sourcepub fn iter_row(self, row_index: usize) -> RowIter<I>
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));
Sourcepub fn get(
self,
col_index: usize,
row_index: usize,
) -> Option<<I as IntoIterator>::Item>
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))
pub fn get_kernel( self, column_index: usize, row_index: usize, ) -> Option<[<I as IntoIterator>::Item; 9]>
pub fn position<P: FnMut(I::Item) -> bool>( self, pred: P, ) -> Option<(usize, usize)>
Sourcepub fn iter_diag_fwd(
self,
column_index: usize,
row_index: usize,
) -> DiagFwdIter<I>
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));
Sourcepub fn iter_diag_bwd(
self,
column_index: usize,
row_index: usize,
) -> DiagBwdIter<I>
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>
impl<I: Iterator<Item = T> + Clone, T> GridIter<I, T>
Sourcepub fn iter_rows(self) -> impl Iterator<Item = RowIter<I>>
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>()))
Sourcepub fn iter_cols(self) -> impl Iterator<Item = ColIter<I>>
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>()))
Sourcepub fn iter_diags_bwd(self) -> impl Iterator<Item = DiagBwdIter<I>>
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>()))
Sourcepub fn iter_diags_fwd(self) -> impl Iterator<Item = DiagFwdIter<I>>
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>()))
pub fn iter_kernels(self) -> impl Iterator<Item = [T; 9]>
Trait Implementations§
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more