Skip to main content

Crate grixy

Crate grixy 

Source
Expand description

Zero-cost 2D grids focused on memory consumption and performance.

Grixy provides a set of traits and types for working with 2D grids, including traits for reading and writing to grids, as well as implementations for common buffer types based on linear arrays or vectors. The crate is no_std compatible, and operates without a dynamic memory allocator; as a result most1 APIs are lazily evaluated, returning or operating on iterators or references rather than copying data around.

Possible use-cases include:

  • 2D games, where grids can represent tile maps, collision detection, or game state
  • Simulations, where grids can represent physical systems, cellular automata, or spatial data
  • Pixel rasterization, where grids can represent images, textures, or graphical data
  • Any other 2D grid-based data structure, such as matrices, graphs, or spatial indexing

§Examples

use grixy::{core::Pos, buf::GridBuf, ops::{GridRead, GridWrite}};

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
enum Tile {
   Empty,
   Wall,
}

let mut grid = GridBuf::new_filled(10, 10, Tile::Empty);
grid.set(Pos::new(5, 5), Tile::Wall).unwrap();
assert_eq!(grid.get(Pos::new(0, 0)), Some(&Tile::Empty));
assert_eq!(grid.get(Pos::new(5, 5)), Some(&Tile::Wall));
assert_eq!(grid.get(Pos::new(11, 0)), None);

§Features

The default features are minimal, and useful mostly in library code that operates on grids.

§alloc

Provides additional (but optional) functionality that uses alloc.

§buffer

Provides the linear GridBuf type (and convenience types) through grixy::buf.

If enabled in combination with alloc, Vec-based grids are available.

§cell

Provides GridWrite when a mutable cell is wrapping a GridWrite type.


  1. The alloc feature enables additional functionality based on alloc

Modules§

bufbuffer
Provides a generic, 2D grid data structure backed by a linear buffer.
core
Core types used in the Grixy crate.
ops
Grid operations and utilities for working with 2D grids.
prelude
Prelude for the grixy crate, re-exporting commonly used items.
transform
Transformation operations for grids.