1 个不稳定版本

0.1.0 2020年1月13日

#1774 in 算法

MIT 许可证

200KB
2.5K SLoC

Ingrid

Ingrid 是一个自包含的包,为 Rust 编程语言提供类似于 STL 的动态二维数组容器。它包含算法,预计是通用的,足以应对大多数用例;最初是为了实现图像像素和基于网格的游戏而编写的。

特性

  • 简洁的动态网格结构
  • 类似切片的行和列
  • 有用的迭代器和适配器集合
  • 具有容量-like 功能的智能实现
  • 现成的常用算法
  • 完整的代码覆盖率
  • 详尽的文档

它遵循 MIT 许可证。如果您重用代码,请保留许可证,随意使用。

快速预览

为了了解使用 Ingrid 的感觉,请查看以下示例。

use ingrid::{Coordinate, Size};
use ingrid::Grid;
use ingrid::GridIterator;
use ingrid::{coord, size}; // Macros to shorten the syntax

// Create a grid with enough allocated memory to contain 9 elements.
let mut grid = Grid::<char>::with_capacity(size!(3, 3));

// Resize the grid to be 2x2 and fill it with a default value.
grid.resize(size!(2, 3), '😞');

// Change the content of the grid with the direct accessors.
grid[coord!(0, 0)] = '😄'; // Top-left element (first element)
grid[coord!(1, 2)] = '😄'; // Bottom-right element (last element)

// Insert a column right in the middle.
grid.insert_column(1, vec!['😮', '😮', '😮']);

// Iterate over the elements of the last row
for (coordinate, emoticon) in grid.row(2).iterator().enumerate_coordinate() {
    println!("Emoticon at {:?} is {}", coordinate, emoticon);
}

下一步是查阅文档,顺便说一下,文档有一个很好的介绍。

更多信息

网站: https://www.intjelic.me/project/ingrid 仓库: https://github.com/intjelic/ingrid 包: https://crates.io/crates/ingrid 文档: https://docs.rs/ingrid 作者: Jonahan De Wachter (dewachter.jonathan[at]gmail[dot]com)

无运行时依赖