Module matrixable::iterators
source · Expand description
This module contains structs for iterating over matrices.
Some of these structs also implement Index
allowing you to use the container[index]
notation.
§Examples
use matrixable::MatrixExt;
let m = [
['a', 'b', 'c'],
['d', 'e', 'f'],
['g', 'h', 'i']
];
{
let row = m.row(0).unwrap();
assert_eq!('a', row[0]);
assert_eq!('b', row[1]);
assert_eq!('c', row[2]);
}
{
let col = m.col(1).unwrap();
assert_eq!('b', col[0]);
assert_eq!('e', col[1]);
assert_eq!('h', col[2]);
}
{
let diag = m.diag(2).unwrap();
assert_eq!('a', diag[0]);
assert_eq!('e', diag[1]);
assert_eq!('i', diag[2]);
}
let m = [['r', 'i', 'o']];
let it = m.iter();
assert_eq!('r', it[0]);
assert_eq!('i', it[1]);
assert_eq!('o', it[2]);
It may happen you just need a unique element. In that case you will rather use .nth()
from the standard Iterator
trait.
use matrixable::MatrixMutExt;
let mut m = [
['a', 'b', 'c'],
['d', 'e', 'f'],
['g', 'h', 'i']
];
let h = m.row_mut(2).unwrap().nth(1).unwrap();
// Or
// = m.rows_mut().nth(2).unwrap().nth(1).unwrap();
assert_eq!(&mut 'h', h);
*h = 'z';
assert_eq!(Some(&mut 'z'), m.row_mut(2).unwrap().nth(1));
Structs§
- An iterator over a matrix column.
- An iterator over a mutable matrix column.
- An iterator over a matrix diagonal.
- An iterator over a mutable matrix diagonal.
- An iterator that yields an element of the a matrix-like
struct
along with the subscripts of that element. - An iterator over the elements of the matrix.
- An iterator over the elements of the matrix (mutable).
- An iterator over a matrix row.
- An iterator over a mutable matrix row.