nested_router

Crates.ionested_router
lib.rsnested_router
version0.2.1
sourcesrc
created_at2022-10-19 16:35:27.487181
updated_at2022-10-19 16:50:19.686983
descriptionNested route-recognizers
homepage
repositoryhttps://github.com/Banyc/nested_router
max_upload_size
id691773
size11,372
IchHabeKeineNamen (Banyc)

documentation

README

Nested Router

Path segment matching for nested routers.

How to use

  1. Define your routes:

    fn route_list_1() -> (RouteList, RouteList) {
        let sub = RouteList {
            routes: vec![Route {
                path: ":id".to_string(),
                has_sub_routes: false,
            }],
        };
        let root = RouteList {
            routes: vec![
                Route {
                    path: ":id".to_string(),
                    has_sub_routes: true,
                },
                Route {
                    path: "about".to_string(),
                    has_sub_routes: false,
                },
            ],
        };
        (root, sub)
    }
    
  2. Use the two routers:

    let (root, sub) = route_list_1();
    
    let absolute_path = "/123/456";
    let relative_path = &absolute_path[1..];
    
    let RouteOutput {
        sub_path,
        route,
        params,
    } = root.route(relative_path).unwrap();
    assert_eq!(route.path, ":id");
    assert_eq!(params.get("id"), Some(&"123".to_string()));
    
    // Your business logic here for the first route
    
    let RouteOutput {
        sub_path,
        route,
        params,
    } = sub.route(&sub_path.unwrap()).unwrap();
    assert_eq!(route.path, ":id");
    assert_eq!(params.get("id"), Some(&"456".to_string()));
    assert_eq!(sub_path, None);
    
    // Your business logic here for the second route
    

Restrictions

  • Route::path should not capture wildcard with name "_sub_path" (crate::SUB_PATH_WILDCARD_NAME).
Commit count: 13

cargo fmt