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, col: usize) -> ColIter<I>
pub fn iter_col(self, col: 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: usize) -> RowIter<I>
pub fn iter_row(self, row: 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: usize, row: usize) -> Option<<I as IntoIterator>::Item>
pub fn get(self, col: usize, row: 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 position<P: FnMut(I::Item) -> bool>( self, pred: P, ) -> Option<(usize, usize)>
Sourcepub fn iter_diag_fwd(self, col: usize, row: usize) -> DiagFwdIter<I>
pub fn iter_diag_fwd(self, col: usize, row: 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, col: usize, row: usize) -> DiagBwdIter<I>
pub fn iter_diag_bwd(self, col: usize, row: 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));
Source§impl<I: Iterator<Item = T> + Clone, T> GridIter<I, T>
impl<I: Iterator<Item = T> + Clone, T> GridIter<I, T>
pub fn iter_rows(self) -> impl Iterator<Item = RowIter<I>>
pub fn iter_cols(self) -> impl Iterator<Item = ColIter<I>>
pub fn iter_diags_bwd(self) -> impl Iterator<Item = DiagBwdIter<I>>
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;
(0..25).into_grid_iter(5)
.iter_diags_fwd()
.flatten()
.sum()
.eq(&(0..25).sum())
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