This crate contains the Cell
type, representing basic unit of Grid
,
the Grid
type, representing two-dimentional field of Cell
s,
the Cells
type, representing iterator over every Cell
on the Grid
,
and the Rows
and Columns
types, representing iterators over subgrids of Grid
One of the best usecases of this crate is for developing CLI
based games:
Cell
has two fields representing position on the Grid
, which are both u8
,
and the Grid
consists of the start
and the end
Cell
s,
making the largest possible Grid
to be 255x255, which is enough for most terminal games.
use ;
let grid = new;
let grid_string = grid
.rows
.map
.;
assert_eq!;
This will create, and print out new Grid
, which has start
at (0, 0)
and end
at (0, 0)
.
Note:
`Grid` has two axis: `width`, and `depth`.When creating `Grid`, `width` and `depth` arguments represent it's length,
but when accessing member (`Cell`) of `Grid`, `width` and `depth` arguments represent relative position (index) of `Cell` on the `Grid`.
Grid
's structure has 2 fields: start: Cell
, and end: Cell
. Here is a simple diagram, showing 5x5 Grid
structure:
Grid
's start
is (0, 0)
, and end
is (4, 4)
, but an actual value of width
is 5, and depth
is also 5:
To perform some actual operations on some Cell
s, relative to the Grid
, we can do this:
use ;
let grid = new;
let start = grid.start;
let next = start.saturating_right.wrapping_down;
assert!;
assert_eq!;
Here is a simple diagram, showing position of next
cell with color yellow:
For more examples, visit grid-math
documentation on crates.io
, Crab Crab! 🦀🦀