#排序 #集合 #元素 #向量 #集合 #唯一 #维护

sorted-vec

创建和维护排序向量以及向量支持的集合

18个版本

0.8.3 2023年9月28日
0.8.2 2023年1月4日
0.8.1 2022年11月13日
0.8.0 2022年4月10日
0.3.1 2019年3月19日

#100 in 数据结构

Download history 4470/week @ 2024-04-23 4338/week @ 2024-04-30 4293/week @ 2024-05-07 5054/week @ 2024-05-14 4863/week @ 2024-05-21 5122/week @ 2024-05-28 11994/week @ 2024-06-04 15039/week @ 2024-06-11 18893/week @ 2024-06-18 20962/week @ 2024-06-25 13842/week @ 2024-07-02 13673/week @ 2024-07-09 11948/week @ 2024-07-16 13503/week @ 2024-07-23 12991/week @ 2024-07-30 13916/week @ 2024-08-06

54,640 每月下载
用于 57 个crate (16 直接)

Apache-2.0

48KB
1K SLoC

sorted_vec

创建和维护排序元素集合。

文档

let mut v = SortedVec::new();
assert_eq!(v.insert (5), 0);
assert_eq!(v.insert (3), 0);
assert_eq!(v.insert (4), 1);
assert_eq!(v.insert (4), 1);
assert_eq!(v.len(), 4);
v.dedup();
assert_eq!(v.len(), 3);
assert_eq!(v.binary_search (&3), Ok (0));
assert_eq!(*SortedVec::from_unsorted (
  vec![5, -10, 99, -11, 2, 17, 10]),
  vec![-11, -10, 2, 5, 10, 17, 99]);

还提供只包含唯一元素的排序集合容器。

serde 支持

serde de/serialization 是一个可选特性。

默认情况下,反序列化未排序容器是一个错误。

要在反序列化时进行排序,将字段标记为 #[serde)]

#[derive(Debug, Eq, Ord, PartialEq, PartialOrd, Deserialize, Serialize)]
pub struct Foo {
  #[serde(deserialize_with = "SortedVec::deserialize_unsorted")]
  pub v : SortedVec <u64>
}

lib.rs:

排序向量。

仓库

  • SortedVec -- 从最小到最大排序,可能包含重复元素
  • SortedSet -- 从最小到最大排序,唯一元素
  • ReverseSortedVec -- 从最大到最小排序,可能包含重复元素
  • ReverseSortedSet -- 从最大到最小排序,唯一元素

partial 模块提供仅实现 PartialOrd 的类型的排序向量,其中不可比较元素的比较会导致运行时崩溃。

依赖项

~165KB