2个版本

0.1.1 2020年7月5日
0.1.0 2019年8月22日

#773 in 数据结构

每月21次下载
用于 craft

MIT 许可证

31KB
611

patricia_router

crate-name at crates.io crate-name at docs.rs Build Status codecov

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实现项目的启发和改编。

无运行时依赖