This is a Radix Trie implementation in Rust, building on the lessons learnt from TrieMap
and Sequence Trie. You can read about my experience implementing this data structure here.
Since writing this code I haven't used it in anger (or production) so it is no doubt in need of some maintenance, testing and optimisation love. If you would like to help out, try solving an open issue, optimise something, or just have a poke around! Thanks :)
- Compressed nodes. Common key prefixes are stored only once.
- Trie-specific methods to look-up closest ancestors and descendants.
- Key Generic. Any type that can be serialised as a vector of bytes can be used as a key.
- Safe - no unsafe code.
Available on Crates.io as radix_trie
.
Just add radix_trie
to the dependencies section of your Cargo.toml
, like so:
radix_trie = "0.2"
Made by:
- Allan Simon (@allan-simon)
- Andrew Smith (@andrewcsmith)
- Arthur Carcano (@NougatRillettes)
- Devin Ragotzy (@DevinR528)
- @hanabi1224
- Jakob Dalsgaard (@jakobdalsgaard)
- Michael Sproul (@michaelsproul)
- Robin Lambertz (@roblabla)
- Sergey (@Albibek)
- Stuart Hinson (@stuarth)
- Vinzent Steinberg (@vks)
MIT License. Copyright © Michael Sproul and contributors 2015-present.