[][src]Crate path_tree

path-tree is a lightweight high performance HTTP request router for Rust.

Examples

use path_tree::PathTree;

let mut tree = PathTree::new();
tree.insert("/", 0);

tree.insert("/users/:id", 1)
    .insert("/users/:user_id/*", 2)
    .insert("/users/:user_id/repos/:id", 3)
    .insert("/*any", 4);

let r = tree.find("/").unwrap();
assert_eq!(r.0, &0);
assert_eq!(r.1, vec![]);

let r = tree.find("/users/31415926").unwrap();
assert_eq!(r.0, &1);
assert_eq!(r.1, vec![("id", "31415926")]);

let r = tree.find("/users/31415926/settings").unwrap();
assert_eq!(r.0, &2);
assert_eq!(r.1, vec![("user_id", "31415926"), ("", "settings")]);

let r = tree.find("/users/31415926/repos/53589793").unwrap();
assert_eq!(r.0, &3);
assert_eq!(r.1, vec![("user_id", "31415926"), ("id", "53589793")]);

let r = tree.find("/about").unwrap();
assert_eq!(r.0, &4);
assert_eq!(r.1, vec![("any", "about")]);

let r = tree.find("/users/31415926/repos/53589793/branches").unwrap();
assert_eq!(r.0, &2);
assert_eq!(r.1, vec![("user_id", "31415926"), ("", "repos/53589793/branches")]);

Structs

Node

A node stores kind data params indices and children nodes.

PathTree

A path tree.

Enums

NodeKind

The Kind of a node.