bravery_router

Crates.iobravery_router
lib.rsbravery_router
version0.1.3
sourcesrc
created_at2019-08-06 21:53:03.901199
updated_at2019-08-29 14:24:54.716224
descriptionRadix Tree implementation
homepage
repositoryhttps://github.com/allevo/bravery_router
max_upload_size
id154685
size84,875
Tommaso Allevi (allevo)

documentation

README

bravery_router

Build Status

Fast HTTP router

## Install

Add the following line into your Cargo.toml

bravery_router = "*"

Usage

use bravery_router::{add, optimize, find, create_root_node};

fn main() {
    let mut root = create_root_node();

    add(&mut root, "/foo", 1);
    add(&mut root, "/foobar", 2);
    add(&mut root, "/users/:id", 3);
    add(&mut root, "/all/*", 4);

    let root = optimize(root);

    let empty_vec: Vec<&str> = vec![];

    let ret = find(&root, "/foo");
    assert_eq!(ret.value, Some(&1));
    assert_eq!(ret.params, empty_vec);
    println!("/foo, {:?}, {:?}", ret.value, ret.params);

    let ret = find(&root, "/foobar");
    assert_eq!(ret.value, Some(&2));
    assert_eq!(ret.params, empty_vec);
    println!("/foobar, {:?}, {:?}", ret.value, ret.params);

    let ret = find(&root, "/users/42");
    assert_eq!(ret.value, Some(&3));
    assert_eq!(ret.params, vec!["42"]);
    println!("/users/42, {:?}, {:?}", ret.value, ret.params);

    let ret = find(&root, "/all/foo/bar");
    assert_eq!(ret.value, Some(&4));
    assert_eq!(ret.params, vec!["foo/bar"]);
    println!("/all/foo/bar, {:?}, {:?}", ret.value, ret.params);

    let ret = find(&root, "/unknwon");
    assert_eq!(ret.value, None);
    assert_eq!(ret.params, empty_vec);
    println!("/unknwon, {:?}, {:?}", ret.value, ret.params);

    println!("Done!");
}

Contributing

Every contribution is welcomed: Open an issue a fire a PR!

License

See License file

Commit count: 29

cargo fmt