Update docs
This commit is contained in:
parent
dac74c753a
commit
92cdf58b13
1 changed files with 32 additions and 35 deletions
67
src/lib.rs
67
src/lib.rs
|
@ -1,39 +1,36 @@
|
||||||
|
/*!
|
||||||
|
# Two Dimensional Grid
|
||||||
|
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 `Vec<Vec<T>>` solution.
|
||||||
|
|
||||||
|
Similar to *C-like* arrays `grid` uses a flat 1D `Vec<T>` data structure to have a continuos
|
||||||
|
memory data layout. See also [this](https://stackoverflow.com/questions/17259877/1d-or-2d-array-whats-faster)
|
||||||
|
explanation of why you should probably use a one-dimensional array approach.
|
||||||
|
|
||||||
|
Note that this crate uses a [*row-major*](https://eli.thegreenplace.net/2015/memory-layout-of-multi-dimensional-arrays) memory layout.
|
||||||
|
Therefore, `grid.push_row()` is way faster then the `grid.push_col()` operation.
|
||||||
|
|
||||||
|
This crate will always provide a 2D data structure. If you need three or more dimensions take a look at the
|
||||||
|
[ndarray](https://docs.rs/ndarray/0.13.0/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](https://docs.rs/cgmath/0.17.0/cgmath/) or [nalgebra](https://docs.rs/nalgebra/0.21.0/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.
|
||||||
|
# Examples
|
||||||
|
```
|
||||||
|
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[1][1], 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]])
|
||||||
|
```
|
||||||
|
*/
|
||||||
use std::cmp::Eq;
|
use std::cmp::Eq;
|
||||||
/// # Two Dimensional Grid
|
|
||||||
///
|
|
||||||
/// 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 `Vec<Vec<T>>` solution.
|
|
||||||
///
|
|
||||||
/// Similar to *C-like* arrays `grid` uses a flat 1D `Vec<T>` data structure to have a continuos
|
|
||||||
/// memory data layout. See also [this](https://stackoverflow.com/questions/17259877/1d-or-2d-array-whats-faster)
|
|
||||||
/// explanation of why you should probably use a one-dimensional array approach.
|
|
||||||
///
|
|
||||||
/// Note that this crate uses a [*row-major*](https://eli.thegreenplace.net/2015/memory-layout-of-multi-dimensional-arrays) memory layout.
|
|
||||||
/// Therefore, `grid.push_row()` is way faster then the `grid.push_col()` operation.
|
|
||||||
///
|
|
||||||
/// This crate will always provide a 2D data structure. If you need three or more dimensions take a look at the
|
|
||||||
/// [ndarray crate](https://docs.rs/ndarray/0.13.0/ndarray/). 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](https://docs.rs/cgmath/0.17.0/cgmath/) or [nalgebra](https://docs.rs/nalgebra/0.21.0/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.
|
|
||||||
///
|
|
||||||
/// # Examples
|
|
||||||
///
|
|
||||||
/// ```
|
|
||||||
/// 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[1][1], 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]])
|
|
||||||
/// ```
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::iter::StepBy;
|
use std::iter::StepBy;
|
||||||
use std::ops::Index;
|
use std::ops::Index;
|
||||||
|
|
Loading…
Reference in a new issue