panoradix

My take on implementing a Radix tree, for usage when large data mappings with slices as indices.

Travis badge crates.io badge

Documentation

What's in this repo?

Both are backed by a Radix tree.

Any slice of elements that are Ord + Eq + Clone can be used as keys, as well as str that are taken as byte slices. Any lookups are done using a &[T] and iteration will yield an owned Vec<T> each time (for str it will yield String items).

Further extension of keys is possible but not recommended since the keys are arguably always a [T]. If you really want to do this, have a look at the ExtensibleKey trait.

Examples

Insert / Lookup

```rust let mut map: RadixMap = RadixMap::new(); map.insert("a", 0); map.insert("ac", 1);

asserteq!(map.get("a"), Some(&0)); asserteq!(map.get("ac"), Some(&1)); assert_eq!(map.get("ab"), None); ```

Removal

```rust let v = vec!["foo", "bar", "baz"]; let mut set: RadixSet = RadixSet::from_iter(v);

set.remove("bar"); assert!(!set.contains("bar")); assert!(set.contains("baz")); ```

Completion

```rust let v = vec!["foo", "bar", "baz"]; let set: RadixSet = RadixSet::from_iter(v);

assert_eq!(set.find("ba").collect::>(), vec!["bar", "baz"]); ```