pub struct Builder<M> {
pub head_can_use_get: bool,
pub redirect_trailing_slash: bool,
pub redirect_clean_path: bool,
pub redirect_behavior: Option<RedirectBehavior>,
pub redirect_method_behavior: HashMap<Method, RedirectBehavior>,
pub remove_catch_all_trailing_slash: bool,
pub escape_added_routes: bool,
/* private fields */
}
Fields
head_can_use_get: bool
Allows the router to use the GET
handler to respond to
HEAD
requests if no explicit HEAD
handler has been added for the
matching pattern. This is true by default.
redirect_trailing_slash: bool
Enables automatic redirection in case the router doesn’t find a matching route for the current request path but a handler for the path with or without the trailing slash exists. This is true by default.
redirect_clean_path: bool
Allows the router to try clean the current request path, if no handler is registered for it.This is true by default.
redirect_behavior: Option<RedirectBehavior>
RedirectBehavior sets the default redirect behavior when RedirectTrailingSlash or RedirectCleanPath are true. The default value is Redirect301.
redirect_method_behavior: HashMap<Method, RedirectBehavior>
Overrides the default behavior for a particular HTTP method. The key is the method name, and the value is the behavior to use for that method.
remove_catch_all_trailing_slash: bool
Removes the trailing slash when a catch-all pattern is matched, if set to true. By default, catch-all paths are never redirected.
escape_added_routes: bool
Controls URI escaping behavior when adding a route to the tree. If set to true, the router will add both the route as originally passed, and a version passed through url::parse. This behavior is disabled by default.
Implementations
sourceimpl<M> Builder<M>
impl<M> Builder<M>
pub fn extend<P: Into<Cow<'static, str>>, B: Into<Treemux>>(
&self,
path: P,
routes: B
)
pub fn scope<'b, P: Into<Cow<'b, str>>>(
&'b mut self,
path: P
) -> GroupBuilder<'b, Identity, M> where
M: Layer<RequestHandler, Service = RequestHandler>,
pub fn not_found<H: Into<RequestHandler>>(&mut self, handler: H) where
M: Layer<RequestHandler, Service = RequestHandler>,
sourcepub fn method_not_allowed<H: Into<RequestHandler>>(&mut self, handler: H) where
M: Layer<RequestHandler, Service = RequestHandler>,
pub fn method_not_allowed<H: Into<RequestHandler>>(&mut self, handler: H) where
M: Layer<RequestHandler, Service = RequestHandler>,
Register a handler for when the path matches a different method than the requested one
sourcepub fn global_options<H: Into<RequestHandler>>(&mut self, handler: H) where
M: Layer<RequestHandler, Service = RequestHandler>,
pub fn global_options<H: Into<RequestHandler>>(&mut self, handler: H) where
M: Layer<RequestHandler, Service = RequestHandler>,
Register a handler for when the path matches a different method than the requested one
pub fn handle_panics<H, R>(&mut self, handler: H) where
R: Future<Output = Result<Response<Body>, Error>> + Send + 'static,
H: Fn(Box<dyn Any + Send>) -> R + Send + Sync + 'static,
pub fn middleware<N>(self, middleware: N) -> Builder<Stack<N, M>> where
N: Layer<M::Service, Service = M::Service>,
M: Layer<RequestHandler, Service = RequestHandler>,
sourcepub fn into_service_with_context<T: Send + Sync + 'static>(
self,
context: T
) -> MakeRouterService<T>
pub fn into_service_with_context<T: Send + Sync + 'static>(
self,
context: T
) -> MakeRouterService<T>
Converts the Treemux
into a Service
which you can serve directly with Hyper
.
If you have an existing Service
that you want to incorporate a Treemux
into, see
Treemux::serve
.
// Our router...
let router = Treemux::builder();
// Convert it into a service...
let service = router.into_service();
// Serve with hyper
hyper::Server::bind(&([127, 0, 0, 1], 3030).into())
.serve(service)
.await?;
sourcepub fn into_service(self) -> MakeRouterService<()>
pub fn into_service(self) -> MakeRouterService<()>
Converts the Treemux
into a Service
which you can serve directly with Hyper
.
If you have an existing Service
that you want to incorporate a Treemux
into, see
Treemux::serve
.
// Our router...
let router = Treemux::builder();
// Convert it into a service...
let service = router.into_service();
// Serve with hyper
hyper::Server::bind(&([127, 0, 0, 1], 3030).into())
.serve(service)
.await?;
Trait Implementations
sourceimpl<M> RouterBuilder for Builder<M> where
M: Layer<RequestHandler, Service = RequestHandler>,
impl<M> RouterBuilder for Builder<M> where
M: Layer<RequestHandler, Service = RequestHandler>,
sourcefn handle<P, H>(&self, method: Method, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
fn handle<P, H>(&self, method: Method, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
Insert a value into the router for a specific path indexed by a key. Read more
sourcefn get<P, H>(&mut self, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
fn get<P, H>(&mut self, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
Register a handler for GET
requests
sourcefn head<P, H>(&mut self, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
fn head<P, H>(&mut self, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
Register a handler for HEAD
requests
sourcefn options<P, H>(&mut self, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
fn options<P, H>(&mut self, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
Register a handler for OPTIONS
requests
sourcefn post<P, H>(&mut self, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
fn post<P, H>(&mut self, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
Register a handler for POST
requests
sourcefn put<P, H>(&mut self, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
fn put<P, H>(&mut self, path: P, handler: H) where
P: Into<String>,
H: Into<RequestHandler>,
Register a handler for PUT
requests
Auto Trait Implementations
impl<M> !RefUnwindSafe for Builder<M>
impl<M> Send for Builder<M> where
M: Send,
impl<M> Sync for Builder<M> where
M: Sync,
impl<M> Unpin for Builder<M> where
M: Unpin,
impl<M> !UnwindSafe for Builder<M>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more