/p/moul/collection/v0
Directory · 4 Files
gno.land/p/moul/collection/v0
A generic collection with multiple indexes (unique, case-insensitive, sparse,
multi-value), backed by a B+ tree (gno.land/p/nt/bptree/v0).
A B+ tree packs many entries per persisted node, so each index entry costs materially less storage and gas than an AVL backing would.
Two operational caveats follow from the in-place-mutating B+ tree backing:
- do not mutate the collection (
Set/Update/Delete) from inside an index iteration callback — a copy-on-write AVL backing would tolerate it, this one does not; - do not copy a non-zero
Collectionby value — the copies would share live tree nodes while their state diverges.
Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.
Dependency graph:

⚠️ Disclaimer: provided as-is, without warranty; not security-audited. Full disclaimer: DISCLAIMER.