Safely match and parse URL routes
```rust
extern crate route;
enum Page<'a> { Home, BlogIndex, BlogPost(u32), BlogEdit(u32), User(&'a str), Account(&'a str), NotFound, }
routefn!(route -> Page { (/) => Page::Home, (/"blog") => Page::BlogIndex, (/"blog"/[id: u32]) => Page::BlogPost(id), (/"blog"/[id: u32]/"edit") => Page::BlogEdit(id), (/"blog"/[id: u32]/[]) => Page::BlogEdit(id), // ignored slug (/"u"/[handle]) => Page::User(handle), (/"me"[/rest..]) => Page::Account(rest), }, Page::NotFound);
fn testroute() { asserteq!(route("/"), Page::Home); asserteq!(route("/blog"), Page::BlogIndex); asserteq!(route("/blog/42"), Page::BlogPost(42)); asserteq!(route("/blog/42/edit"), Page::BlogEdit(42)); asserteq!(route("/u/uniphil"), Page::User("uniphil")); asserteq!(route("/asdf"), Page::NotFound); asserteq!(route("/blog/abc"), Page::NotFound); assert_eq!(route("/me/a/b/c/d/e/f/g"), Page::Account("/a/b/c/d/e/f/g")); } ```