2个版本
0.1.1 | 2020年7月5日 |
---|---|
0.1.0 | 2019年8月22日 |
#773 in 数据结构
每月21次下载
用于 craft
31KB
611 行
patricia_router
Rust的Radix Tree实现。
安装
将此添加到应用程序的 Cargo.toml
。
[dependencies]
patricia_router = 0.1.0
使用
let mut router = Router::<&str>::new();
router.add("/", "root");
router.add("/*filepath", "all");
router.add("/products", "products");
router.add("/products/:id", "product");
router.add("/products/:id/edit", "edit");
router.add("/products/featured", "featured");
let mut result = router.find("/products/featured");
assert_eq!(result.key(), "/products/featured");
assert_eq!(result.payload, &Some("featured"));
// named parameters match a single path segment
result = router.find("/products/1000");
assert_eq!(result.key(), "/products/:id");
assert_eq!(result.payload, &Some("product"));
// catch all parameters match everything
result = router.find("/admin/articles");
assert_eq!(result.key(), "/*filepath");
assert_eq!(result.params("filepath"), "admin/articles");
开发
运行以下命令进行测试。
$ cargo test
$ rustup install nightly
$ cargo +nightly bench
提交到此存储库的代码应按以下格式进行格式化:cargo +nightly fmt
。
$ rustup toolchain install nightly
$ cargo +nightly fmt
实现
该项目受到了来自luislavena/radix Crystal实现项目的启发和改编。