1 个不稳定版本
0.1.0 | 2020年1月13日 |
---|
#1774 in 算法
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)