hyper_routing/
builder.rs

1use super::Route;
2use super::Router;
3
4/// Builder for a router
5///
6/// Example usage:
7///
8#[derive(Debug, Default)]
9pub struct RouterBuilder {
10    routes: Vec<Route>,
11}
12
13impl RouterBuilder {
14    pub fn new() -> RouterBuilder {
15        RouterBuilder { routes: vec![] }
16    }
17
18    /// Adds new `Route` for `Router` that is being built.
19    ///
20    /// Example:
21    ///
22    /// ```ignore
23    /// use hyper::server::{Request, Response};
24    /// use hyper_router::{Route, RouterBuilder};
25    ///
26    /// fn some_handler(_: Request) -> Response {
27    ///   // do something
28    /// }
29    ///
30    /// RouterBuilder::new().add(Route::get(r"/person/\d+").using(some_handler));
31    /// ```
32    #[allow(clippy::should_implement_trait)]
33    pub fn add(mut self, route: Route) -> RouterBuilder {
34        self.routes.push(route);
35        self
36    }
37
38    pub fn build(self) -> Router {
39        Router {
40            routes: self.routes,
41        }
42    }
43}