Expand description
This library implements persistent datastructures for Rust, with efficient, with the complexity of the union operation can be sublinear in practical cases.
§Deterministically balanced search trees
This is achieved by using deterministically balanced trees, where the
split-points of the tree are determined by the Weight
of the elements
in the collection.
That T implements Weight, means that T
, or parts of T
can be Hashed
this hash is then used to determine the weight, essentialy by counting
leading zeroes in the hash.
§Copy on write, and structural sharing
Cloning a collection is a constant time operation. This is achieved by
the Stash abstraction, which keeps a collection of Nodes, referenced by
a Location
indirection.
§Pluggable metadata
Each collection can carry different kinds of metadata, metadata is defined
as the operations &T -> Meta<T>
, and a binary operation combining
two Meta<T>
with each other. So, to implement a Set, you would use
Max<T>
, and if you also want constant-time equality checking, you would
add `CheckSum
Structs§
- Collection
- A collection of elements of type T, with metadata of type M.
Traits§
- Val
- A value that can be put into a Collection.
Has to be clonable, and have impl the
tree::weight::Weight
trait