panoradix
My take on implementing a Radix tree, for usage when large data mappings with slices as indices.
Note: this is currently a work in progress, expect unannounced brutal API changes every time the version is bumped.
What's in this repo?
Both are backed by a Radix tree.
What's being worked on?
A lot is missing right now, here's a wishlist sorted by difficulty/want:
-
documentation: should follow the API guidelines
- in progress, some prose needs to be written on the modules
-
map iterators:
values_mut() -
intersection: should be straightforward
-
union: since there can't be multiple values, merging two values with the same key should be annoying
-
faster edge search: currently linear, should probably be binary search
- can be found on the binary-search-edges branch, needs to be optimized as benches show slower runs using binary search instead of linear
What's just been finished?
- take arbitrary keys instead of strings
- faster iteration: tree iterators were hacked together and abuses heap allocation/recursion, now use a faster structure
- clearing:
clear()on both map/set - fitering elements:
find()on both map/set - erasing a key:
remove()on both map/set - set iterators:
keys() - map iterators:
keys(),values()anditer()