#routes #path #nfa #lightning #router #matching #recognizer

lightning-path

快速匹配的路由识别库

3 个稳定版本

1.0.2 2024年6月18日

#5#lightning

MIT 许可证

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"));
}

无运行时依赖