2 个版本
0.0.2 | 2024年4月18日 |
---|---|
0.0.1 | 2024年2月7日 |
在 数据结构 中排名第 773
每月下载量 906
160KB
2.5K SLoC
vecset
一个基于向量的有序映射、集合和键值集合实现,无依赖项,支持 #![no_std]
。
该软件包提供 VecMap
,VecSet
和 KeyedVecSet
,这些是排序向量映射接口的包装。对于所有类型,使用 Vec::binary_search
进行搜索的时间复杂度为 O(n)。
VecMap<K, V>
是排序向量 Vec<(K, V)>
的映射接口。它是 KeyedVecSet
特化 KeyedVecSet<K, (K, V)>
的包装。
VecSet<T>
是排序向量 Vec<T>
的集合接口。它是 KeyedVecSet
特化 KeyedVecSet<T, T>
的包装。这也与排序保证的 Vec<T>
相同。
KeyedVecSet<K, V>
是一个排序向量 Vec<V>
的泛型接口,其中 V: Keyed<K>
。这意味着 V
通过键访问器 <V as Keyed<K>>::key() -> &K
提供一个键值。当值包含其自身的键时,这很有用。访问 KeyedVecSet
元素的可变引用是不安全的,因为编辑键值可能会破坏容器的排序。通过隐藏可变引用中的键部分,相同的函数对 VecMap
也是安全的。
映射键必须形成一个全序。
Cargo 特性
以下特性可用
serde
:为VecMap
和VecSet
提供了Serialize
和Deserialize
实现。此特性默认禁用。启用它将引入serde
作为一个依赖项。
许可证
vecset 的源代码根据您的选择,受 Apache License, Version 2.0 或 MIT 许可证 的许可。
感谢 vecmap-rs,本项目基于其第一个版本。
依赖项
~165KB