2 个版本

使用旧的 Rust 2015

0.1.1 2017 年 4 月 14 日
0.1.0 2017 年 4 月 14 日

#1923数据结构

GPL-3.0 许可证

105KB
3K SLoC

集合

0.1 Rube Goldberg 发布

此库为 Rust 实现持久化数据结构,具有高效的,联合操作的复杂性在实际情况中可以小于线性。

确定性平衡搜索树

这是通过使用确定性平衡树实现的,其中树的分裂点由集合中元素的 Weight 决定。

如果 T 实现 Weight,则意味着 TT 的部分可以被 Hashed,然后使用该哈希值来确定权重,本质上是通过计算哈希中的前导零的数量来实现的。权重决定了要分割的层数。

Example set

写时复制,以及结构共享

克隆集合是一个常量时间操作。这是通过 Stash 抽象实现的,它通过一个 Location 间接引用来维护一个节点集合。

可插拔元数据

每个集合都可以携带不同类型的元数据,元数据定义为操作 &T -> Meta<T>,以及结合两个 Meta<T> 的二进制操作。因此,要实现一个集合,你会使用 Max<T>,如果你还想要常量时间的等价性检查,你会添加 CheckSum<T>

集合类型

集合包含 3 个预定义的操作集,组成一个集合、一个向量和一个映射。

要定义一个集合,你使用 collection!

    collection!(Set<T> {
        max: Max<T>,
        checksum: CheckSum<u64>,
    } where T: Ord + Hash);

    collection!(Vector<T> {
        cardinality: Cardinality<usize>,
        checksum: CheckSum<u64>,
    } where T: Hash);

    collection!(Map<T> {
        key: Key<T::Key>,
        keysum: KeySum<u64>,
				valsum: ValSum<u64>,
    } where T: Keyed, 
            T::Key: Hash,
            T::Value: Hash);				

许可证

GPLv3

依赖项

~365–590KB