path-tree
Path-based routing tree.
A compressing dynamic trie (radix tree) structure is used for efficient matching.
Features
Usage
use PathTree;
let mut tree = new;
tree.insert;
tree.insert;
tree.insert;
tree.insert;
tree.insert;
tree.insert;
tree.insert;
tree.insert;
tree.insert;
tree.insert;
tree.insert;
tree.insert;
tree.insert;
// Matched "/"
let node = tree.find;
assert_eq!;
let res = node.unwrap;
assert_eq!;
assert_eq!;
if let Some = &res.0.data
assert_eq!; // Params
// Matched "/:username"
let node = tree.find;
assert_eq!;
let res = node.unwrap;
assert_eq!;
if let Some = &res.0.data
assert_eq!; // Params
// Matched "/*any"
let node = tree.find;
let res = node.unwrap;
assert_eq!;
if let Some = &res.0.data
assert_eq!;
// Matched "/users/:id"
let node = tree.find;
let res = node.unwrap;
assert_eq!;
if let Some = &res.0.data
assert_eq!; // Params
// Matched "/users/:user_id/repos/:id"
let node = tree.find;
let res = node.unwrap;
assert_eq!;
if let Some = &res.0.data
assert_eq!; //
Params
// Matched "/users/:user_id/repos/:id/*any"
let node = tree.find;
let res = node.unwrap;
assert_eq!;
if let Some = &res.0.data
assert_eq!; // Params
// Matched "/users/repos/*any"
let node = tree.find;
let res = node.unwrap;
assert_eq!;
if let Some = &res.0.data
assert_eq!;
Acknowledgements
It is inspired by the:
- rax
- httprouter
- echo router
- trekjs router
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)