grux 0.2.0

A library for drawing grid-based user interfaces using ASCII characters
Documentation
  • Coverage
  • 86.36%
    19 out of 22 items documented8 out of 17 items with examples
  • Size
  • Source code size: 34.36 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 2.7 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • matanlurey/grux
    4 0 1
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • matanlurey

grux

A library for drawing grid-based user interfaces using ASCII characters.

Rust Checks Coverage Status Current Crates.io Version Docs License: MIT

// Provides a uniform interface for drawing to a 2D grid.
use grux::GridWriter;

// Create a 3x3 2D array.
// Alternatives provided by `grux`: `Vec<Vec<T>>` and `String`.
let mut grid = [[' '; 3]; 3];

// Draw some random stuff. In practice, you'd probably use the `Sprite` trait.
grid.set((0, 0), '');
grid.set((1, 0), '');
grid.set((2, 0), '');
grid.set((0, 1), '');
grid.set((2, 1), '');
grid.set((0, 2), '');
grid.set((1, 2), '');
grid.set((2, 2), '');

// Provides a uniform interface for displaying a 2D grid.
use grux::DisplayGrid;

// ╔═╗
// ║ ║
// ╚═╝
println!("{}", grid.to_string().unwrap());

See the examples directory for more, including built-in sprites.

Why Grux?

There are plenty of existing libraries for terminal-based user interfaces, but none of them are quite what I wanted. I wanted a library that would let me draw a grid of cells, each of which could contain a single character.

Importantly, Grux isn't a UI framework.

It doesn't handle input or even output. It just lets you draw to a grid-like structure, which could be:

  • A Vec<Vec<T>>
  • A String
  • A fixed-size 2D array (i.e. [[T; 10]; 10])
  • Your custom data structure (just implement GridWriter and/or DisplayGrid)

tl;dr: Draw to whatever you want, and build on top of it (or replace it).