#map #set #vec #no-std #keyed-set

no-std vecset

基于向量的有序映射、集合和键值集合实现

2 个版本

0.0.2 2024年4月18日
0.0.1 2024年2月7日

数据结构 中排名第 773

Download history 23/week @ 2024-05-03 44/week @ 2024-05-10 77/week @ 2024-05-17 4/week @ 2024-05-24 15/week @ 2024-06-07 271/week @ 2024-06-14 743/week @ 2024-06-21 406/week @ 2024-06-28 254/week @ 2024-07-05 210/week @ 2024-07-12 150/week @ 2024-07-19 318/week @ 2024-07-26 202/week @ 2024-08-02 256/week @ 2024-08-09 117/week @ 2024-08-16

每月下载量 906

MIT/Apache

160KB
2.5K SLoC

vecset

Build Status crates.io docs.rs License: Apache 2.0 License: MIT

一个基于向量的有序映射、集合和键值集合实现,无依赖项,支持 #![no_std]

该软件包提供 VecMapVecSetKeyedVecSet,这些是排序向量映射接口的包装。对于所有类型,使用 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:为 VecMapVecSet 提供了 SerializeDeserialize 实现。此特性默认禁用。启用它将引入 serde 作为一个依赖项。

许可证

vecset 的源代码根据您的选择,受 Apache License, Version 2.0MIT 许可证 的许可。

感谢 vecmap-rs,本项目基于其第一个版本。

依赖项

~165KB