2个版本
0.1.1 | 2022年5月4日 |
---|---|
0.1.0 | 2022年5月4日 |
#904 in 游戏开发
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 |
已找到值,是否可变取决于你是否调用了 get 或 get_mut |