8 个版本
新 0.1.7 | 2024 年 8 月 21 日 |
---|---|
0.1.6 | 2024 年 7 月 9 日 |
0.1.4 | 2024 年 6 月 14 日 |
#481 在 数据结构
136 每月下载量
145KB
3K SLoC
二维平面
模型连续、无限大的(在整数和存储限制内)2D 数据结构。此 crate 的目的是提供一种在特定场景下比 HashMap<(i32, i32), T>
更快的结构,并提供更好的 API 来处理 2D 平面。
此 crate 将始终提供 2D 数据结构。类型 Plane<T>
是实现 Default
特性的各种数据类型的容器。您可以使用 Option<T>
来存储可选初始化的数据。
除了 std 库之外的依赖项,不使用其他依赖项,除非依赖于功能标志隐藏的依赖项。
内存布局
使用几乎完全相同的 grid crate 来使用 Grid<T>
类型。在 Vec<T>
中存储平面的密集块(由 grid
crate 的副本提供的 Grid<T>
)和 HashMap<(i32, i32), T>
来存储超出 Grid<T>
边界的单元格。与 HashMap<(i32, i32), T>
不同,这里进行了两次分配。
lib.rs
:
二维平面
模型连续、无限大的(在整数和存储限制内)2D 数据结构。此 crate 的目的是提供一种在特定场景下比 HashMap<(i32, i32), T>
更快的结构,并提供更好的 API 来处理 2D 平面。
此 crate 将始终提供 2D 数据结构。类型 Plane<T>
是实现 Default
特性的各种数据类型的容器。您可以使用 Option<T>
来存储可选初始化的数据。
除了 std 库之外的依赖项,不使用其他依赖项,除非依赖于功能标志隐藏的依赖项。
内存布局
使用几乎完全相同的 grid crate 来使用 Grid<T>
类型。在 Vec<T>
中存储平面的密集块(由 grid
crate 的副本提供的 Grid<T>
)和 HashMap<(i32, i32), T>
来存储超出 Grid<T>
边界的单元格。与 HashMap<(i32, i32), T>
不同,这里进行了两次分配。
依赖关系
~0–1.3MB
~22K SLoC