#array #array-index #ecs #data-structures #gamedev

generational_array

一个小型包,用于处理代数数组并防止重用空间时的ABA问题。

2个版本

0.1.1 2022年5月4日
0.1.0 2022年5月4日

#904 in 游戏开发

MIT许可协议

8KB
107

代数数组

为什么要使用它

使用代数数组有两个主要优点

  • 当你从数组中删除一个元素并尝试访问它时,由于代数的存在可以防止ABA问题。
  • 数组将尝试通过重用数组中的未使用单元格来分配最小的内存量。

此模块提供了一个简单的接口来处理代数数组,与经典向量相比,几乎没有任何额外的运行时复杂性。

如何使用它

类型

此模块公开了4种不同的类型

名称 描述
GenerationalIndex 表示代数数组中索引的类型。它由索引(usize)和代数(usize)组成。
查看方法
GenerationalArray 表示代数数组的泛型类型。
GenerationalArrayResult 当从代数数组中获取项的引用时使用的枚举。
查看变体
GenerationalArrayResultMut 当从代数数组中获取项的可变引用时使用的枚举。
查看变体

GenerationalArray的方法

方法 用途
new 创建新的GenerationalArray实例。
insert 添加一个元素,参数为值,并返回索引(GenerationalIndex)。
remove 删除一个元素,参数为索引,并返回一个Result<_, &'static str>
get 获取元素的引用,参数为索引,并返回GenerationalArrayResult
get_mut 获取元素的引用,参数为索引,并返回GenerationalArrayResultMut
is_empty 数组是否为空,返回bool
size 返回数组的长度(usize)。
used_size 返回数组中实际非空单元格的数量(usize)。

GenerationalArrayResult

变体 含义
None 当前索引包含None。
OutDated 索引的代数与当前代数不匹配。
OutOfBounds 索引超出范围。
Some 已找到值,是否可变取决于你是否调用了 getget_mut

作者:Maxooz

无运行时依赖