1 unstable release
new 0.1.0 | Apr 10, 2024 |
---|---|
0.0.0 |
|
#6 in #radix-tree
254 downloads per month
110KB
1K
SLoC
radixmap
⚠️ Caution: Not Ready for Production! ⚠️
Rust-based Radix Tree for fast prefix lookup, supporting named param, regex and glob
Features
- Fast prefix-based lookup
- RadixMap and RadixSet support
- Standard collection-compatible interfaces
- Named param, regex and glob support
- Pre-order, post-order, level-order iterations
- Comprehensive unit tests for correctness
Example
use radixmap::{RadixMap, RadixResult};
fn main() -> RadixResult<()> {
let mut map = RadixMap::new();
map.insert("/api", "api")?;
map.insert("/api/v1", "v1")?;
map.insert("/api/v1/user", "user1")?;
map.insert("/api/v2", "v2")?;
map.insert("/api/v2/user", "user2")?;
assert_eq!(map.get("/api/v1/user"), Some(&"user1"));
assert_eq!(map.get("/api/v2/user"), Some(&"user2"));
let mut iter = map.iter(); // pre-order by default
assert_eq!(iter.next(), Some(("/api", &"api")));
assert_eq!(iter.next(), Some(("/api/v1", &"v1")));
assert_eq!(iter.next(), Some(("/api/v1/user", &"user1")));
assert_eq!(iter.next(), Some(("/api/v2", &"v2")));
assert_eq!(iter.next(), Some(("/api/v2/user", &"user2")));
assert_eq!(iter.next(), None);
Ok(())
}
Benchmark
- MacBook Air, Apple M2 24G, Sonoma 14.4, Rust 1.77.1
Name | Time |
---|
- AWS c5.2xlarge, 8C 16G, Ubuntu 22.04, Rust 1.77.1
Name | Time |
---|
Documentation
The documentation is available here.
License
This software is released under the MIT License.
Dependencies
~3.5–5.5MB
~93K SLoC