#grid #ascii #用户界面 #ui #终端 #2d-grid

grux

使用ASCII字符绘制基于网格的用户界面的库

2个不稳定版本

0.2.0 2023年1月5日
0.1.0 2023年1月4日

#416 in 可视化

MIT 许可证

30KB
409 行代码(不包括注释)

grux

使用ASCII字符绘制基于网格的用户界面的库。

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());

请参阅示例目录以获取更多信息,包括内置精灵。

为什么选择Grux?

已经有很多基于终端的用户界面库,但它们都不完全符合我的需求。我需要一个库,让我能够绘制一个网格,每个网格可以包含一个字符。

重要的是,Grux 不是一个UI框架

它不处理输入或输出。它只允许你在一个类似网格的结构上绘制,这可以是:

  • 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).

无运行时依赖