19个版本 (破坏性)

0.14.0 2024年5月15日
0.13.0 2023年12月18日
0.12.0 2023年11月22日
0.10.0 2023年5月1日
0.1.1 2017年12月23日

#91 in 数据结构

Download history 19998/week @ 2024-05-03 19417/week @ 2024-05-10 17917/week @ 2024-05-17 19948/week @ 2024-05-24 19998/week @ 2024-05-31 18621/week @ 2024-06-07 20237/week @ 2024-06-14 18530/week @ 2024-06-21 18582/week @ 2024-06-28 26727/week @ 2024-07-05 28371/week @ 2024-07-12 27305/week @ 2024-07-19 25959/week @ 2024-07-26 22012/week @ 2024-08-02 25915/week @ 2024-08-09 18902/week @ 2024-08-16

97,034 每月下载量
用于 271 个crate(11直接)

MIT 许可证

115KB
2.5K SLoC

Grid

docs crates.io build status license

为Rust提供的数据结构网格。提供易于使用且快速的二维数据结构。此crate实现了大多数由std::vec::Vec类型为单维向量提供的功能,用于二维。

要使用gridno_std导入库,例如

grid = { version = "*", default-features = false }

lib.rs:

二维网格

连续可增长的二维数据结构。此crate的目的是提供一个比原始的Vec<Vec<T>>解决方案更快、更节省内存、更易于使用的通用数据结构。

此crate将始终提供二维数据结构。如果您需要三个或更多维度,请查看ndarray库。《code>grid crate是一个各种数据的容器。如果您需要执行矩阵运算,您最好使用线性代数库,例如cgmathnalgebra。除了std库外,不使用其他依赖项。大多数std::Vec<T>提供的功能也已在grid中实现,并略微修改以适应二维数据对象。

内存布局

类似于 C-like 数组,grid 使用扁平的 1D Vec<T> 数据结构,以实现连续的内存数据布局。请参阅此解释,了解为什么你可能需要使用一维数组方法。

请注意,此 crate 默认使用行主序的内存布局。

如果您需要特定的内存布局,请使用 *_with_order 构造函数。还应注意的是,某些转换方法会改变内部内存布局,例如 transpose

这个选择很重要,因为行主序内存布局下对行的操作更快。同样,列主序内存布局下对列的操作更快。

示例

use grid::*;
let mut grid = grid![[1,2,3]
[4,5,6]];
assert_eq!(grid, Grid::from_vec(vec![1,2,3,4,5,6],3));
assert_eq!(grid.get(0, 2), Some(&3));
assert_eq!(grid[(1, 1)], 5);
assert_eq!(grid.size(), (2, 3));
grid.push_row(vec![7,8,9]);
assert_eq!(grid, grid![[1,2,3][4,5,6][7,8,9]])

依赖项

~170KB