3 个稳定版本
1.0.2 | 2024年6月18日 |
---|
#5 在 #lightning
22KB
554 行
概览
本项目旨在研究非确定有限自动机(NFA)的概念及其在路由识别中的应用。通过利用现有的 route-recognizer 库,本项目旨在深入了解使用 NFA 进行动态路由处理的实际实施和好处。该路由识别库为在 Rust 中探索这些概念提供了坚实的基础,展示了如何使用 NFA 高效地匹配和管理路由。
闪电路径 是一个高性能的路由识别库,专为 Rust 设计,使用非确定有限自动机(NFA)的概念高效地匹配 URL 模式。它允许您定义路由,并快速确定哪个路由匹配给定的 URL 路径,非常适合需要快速且可靠的路由的 Web 框架和其他应用程序。
示例
静态路由
use lightning_path::Router;
fn main() {
let mut router = Router::new();
router.add("/home", "Home");
router.add("/about", "About");
router.add("/contact", "Contact");
let m = router.recognize("/home").unwrap();
assert_eq!(*m.handler, Some("Home"));
}
动态路由
use lightning_path::Router;
fn main() {
let mut router = Router::new();
router.add("/user/:id", "User");
router.add("/post/:id", "Post");
let m = router.recognize("/user/123").unwrap();
assert_eq!(*m.handler, Some("User"));
assert_eq!(m.params.find("id"), Some("123"));
}
通配符路由
use lightning_path::Router;
fn main() {
let mut router = Router::new();
router.add("/fs/*path", "fs");
let m = router.recognize("/fs/random-file-path").unwrap();
assert_eq!(*m.handler, "fs");
assert_eq!(m.params.find("path"), Some("random-file-path"));
}