#range #union-find #disjoint-set #no-std

no-std range_union_find

范围并查集数据结构

10 个版本

0.5.0 2023年6月2日
0.4.4 2023年1月3日
0.4.3 2022年10月23日
0.4.2 2022年5月19日
0.4.1 2021年7月2日

#834数据结构

Download history 35/week @ 2024-03-13 6/week @ 2024-03-27 14/week @ 2024-04-03 5/week @ 2024-05-22 459/week @ 2024-05-29 9759/week @ 2024-06-05 12179/week @ 2024-06-12 12776/week @ 2024-06-19 15520/week @ 2024-06-26

50,317 每月下载量
2 个 crate 中使用 (通过 choice-string)

MIT/Apache

65KB
1K SLoC

range_union_find

Crates.io Crates.io License License

这个 crate 实现了一个范围并查集数据结构,支持 PrimIntFloat

请参阅 API 文档以获取更多信息。


lib.rs:

提供了一种由向量支持的数据结构,用于合并整数的范围。我们智能地合并插入的范围以最小化所需的存储。

示例用法

let mut range_holder = RangeUnionFind::<u32>::new();
range_holder.insert_range(&(4..=8))?;
range_holder.insert_range(&(6..=10))?;
assert_eq!(range_holder.has_range(&(2..=12))?, OverlapType::Partial(7));
assert_eq!(range_holder.has_range(&(5..=9))?, OverlapType::Contained);

主要类型是 RangeUnionFind 结构体,其中实现了 NumInRange 特性,该特性用于原始整数和浮点类型,可用于形成范围。虽然我们尽力支持浮点数范围,但可能会出现由于浮点数不精确而引起的问题。

依赖关系

~140–435KB