rouille::find_route [] [src]

macro_rules! find_route {
    ($($handler:expr),+) => { ... };
}

Evaluates each parameter until one of them evaluates to something else than Err(RouteError::NoRouteFound).

This macro supposes that each route returns a Result<_, RouteError>.

Example

use rouille::{Request, Response, RouteError};

fn handle_request_a(_: &Request) -> Result<Response, RouteError> {
   // ...
}

fn handle_request_b(_: &Request) -> Result<Response, RouteError> {
   // ...
}

fn handle_request_c(_: &Request) -> Result<Response, RouteError> {
   // ...
}

// First calls `handle_request_a`. If it returns anything else than `NoRouteFound`, then the
// `response` will contain the return value.
//
// Instead if `handle_request_a` returned `NoRouteFound`, then `handle_request_b` is tried.
// If `handle_request_b` also returns `NoRouteFound`, then `handle_request_c` is tried.
let response = find_route!(
    handle_request_a(request),
    handle_request_b(request),
    handle_request_c(request)
);