1 个不稳定版本
0.1.0 | 2023年12月11日 |
---|
#1829 在 数据结构
15KB
123 行
固定索引向量 - Rust包
本包提供了 FixedIndexVec
,这是一个Rust集合,具有类似于数组的不可变索引功能。每个值在插入时都与一个唯一的索引相关联。可以通过索引访问、插入和删除值。项目不能被修改,也不能在删除后用另一个项目替换。
默认特性下,FixedIndexVec
没有除Rust标准库之外的依赖项。
动机
我在寻找一种在数据结构内进行简单版本控制的方法。在FixedIndexVec
中的索引不可变性允许简单地实现此功能。项目插入顺序通过比较其索引得以保持,删除项目则通过在访问时返回None
的索引来反映。
要访问项目的“当前”版本,只需调用FixedIndexVec::last()
。
FixedIndexVec
还有其他用例,但这是我创建它的动机。
安装
将以下内容添加到您的Cargo.toml
[dependencies]
fixed_index_vec = "0.1.0"
然后将其包含在您的应用程序中
use fixed_index_vec::FixedIndexVec;
使用功能
- 使用
FixedIndexVec::new()
创建一个新的FixedIndexVec
- 使用
FixedIndexVec::push(value)
在FixedIndexVec
的末尾插入一个新元素 - 使用
FixedIndexVec::remove(index)
在指定索引处删除一个元素。如果该索引处不存在元素,则返回None
。 - 返回给定索引处的元素引用,使用
FixedIndexVec::get(index)
。如果该索引处不存在元素,则返回None
。 - 使用
FixedIndexVec::iter()
遍历所有元素,按其索引的升序排序。跳过没有对应值的索引。 - 使用
FixedIndexVec::len()
返回FixedIndexVec
中的元素数量 - 使用
FixedIndexVec::is_empty()
检查FixedIndexVec
是否不包含任何元素 - 使用
FixedIndexVec::clear()
从FixedIndexVec
清除所有值 - 使用
FixedIndexVec::reset()
清除FixedIndexVec
中的所有值并将下一个索引重置为0
特性
serde
:使用Serde启用FixedIndexVec
的序列化和反序列化。要求FixedIndexVec
包含实现Serialize
和DeserializeOwned
的值。
示例
use fixed_index_vec::FixedIndexVec;
let mut vec = FixedIndexVec::new();
vec.push("value1".to_string()); vec.push("value2".to_string());
assert_eq!(vec.get(0), Some(&"value1".to_string())); assert_eq!(vec.get(1), Some(&"value2".to_string()));
vec.remove(1);
assert_eq!(vec.get(1), None);
贡献
欢迎提交拉取请求。对于重大更改,请先打开一个问题以讨论您想进行更改的内容。
许可证
本项目采用MIT许可证。
依赖关系
~175KB