Continuos growable 2D data structure.
The purpose of this crate is to provide an universal data structure that is faster,
uses less memory, and is easier to use than a naive
Similar to C-like arrays
grid uses a flat 1D
Vec<T> data structure to have a continuos
memory data layout. See also this
explanation of why you should probably use a one-dimensional array approach.
Note that this crate uses a row-major memory layout.
grid.push_row() is way faster then the
This crate will always provide a 2D data structure. If you need three or more dimensions take a look at the
ndarray library. The
grid create is a container for all kind of data.
If you need to perform matrix operations, you are better of with a linear algebra lib, such as
cgmath or nalgebra.
No other dependencies except for the std lib are used.
Most of the functions
std::Vec<T> offer are also implemented in
grid and slightly modified for a 2D data object.
use grid::*; let mut grid = grid![[1,2,3] [4,5,6]]; assert_eq!(grid, Grid::from_vec(vec![1,2,3,4,5,6],3)); assert_eq!(grid.get(0,2), Some(&3)); assert_eq!(grid, 5); assert_eq!(grid.size(), (2,3)); grid.push_row(vec![7,8,9]); assert_eq!(grid, grid![[1,2,3][4,5,6][7,8,9]])
Init a grid with values.
Stores elements of a certain type in a 2D grid structure.