Struct Router
pub struct Router<State = (), Layer = DefaultEndpointLayer, O = Response, E = RouterError> { /* private fields */ }http only.Expand description
A basic router that can be used to route requests to different services based on the request path.
This router uses matchit::Router to efficiently match incoming requests
to predefined routes. Each route is associated with an HttpMatcher
and a corresponding service handler.
Implementations§
§impl<O, E> Router<(), DefaultEndpointLayer, O, E>
impl<O, E> Router<(), DefaultEndpointLayer, O, E>
pub fn new() -> Router<(), DefaultEndpointLayer, O, E>
pub fn new() -> Router<(), DefaultEndpointLayer, O, E>
create a new router.
§impl<State, O, E> Router<State, DefaultEndpointLayer, O, E>
impl<State, O, E> Router<State, DefaultEndpointLayer, O, E>
pub fn new_with_state(state: State) -> Router<State, DefaultEndpointLayer, O, E>
pub fn new_with_state(state: State) -> Router<State, DefaultEndpointLayer, O, E>
Create a new router with state
§impl<State, L, O, E> Router<State, L, O, E>
impl<State, L, O, E> Router<State, L, O, E>
pub fn with_endpoint_layer<N>(self, layer: N) -> Router<State, N, O, E>
pub fn with_endpoint_layer<N>(self, layer: N) -> Router<State, N, O, E>
Apply layer to every endpoint registered after this call.
Routes registered before this call keep whatever layer was in effect at the time of registration.
pub fn with_default_endpoint_layer(
self,
) -> Router<State, DefaultEndpointLayer, O, E>
pub fn with_default_endpoint_layer( self, ) -> Router<State, DefaultEndpointLayer, O, E>
Apply DefaultEndpointLayer to every endpoint registered after this call.
Routes registered before this call keep whatever layer was in effect at the time of registration.
pub fn with_get<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_get<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a GET route to the router.
the path can contain parameters, e.g. /users/{id}.
the path can also contain a catch call, e.g. /assets/{*path}.
pub fn set_get<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_get<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a GET route to the router.
the path can contain parameters, e.g. /users/{id}.
the path can also contain a catch call, e.g. /assets/{*path}.
pub fn with_post<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_post<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a POST route to the router.
pub fn set_post<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_post<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a POST route to the router.
pub fn with_put<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_put<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a PUT route to the router.
pub fn set_put<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_put<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a PUT route to the router.
pub fn with_delete<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_delete<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a DELETE route to the router.
pub fn set_delete<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_delete<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a DELETE route to the router.
pub fn with_patch<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_patch<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a PATCH route to the router.
pub fn set_patch<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_patch<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a PATCH route to the router.
pub fn with_head<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_head<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a HEAD route to the router.
pub fn set_head<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_head<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a HEAD route to the router.
pub fn with_options<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_options<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a OPTIONS route to the router.
pub fn set_options<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_options<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a OPTIONS route to the router.
pub fn with_trace<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_trace<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a TRACE route to the router.
pub fn set_trace<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_trace<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a TRACE route to the router.
pub fn with_connect<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_connect<I, T>(
self,
path: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a CONNECT route to the router.
pub fn set_connect<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_connect<I, T>(
&mut self,
path: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a CONNECT route to the router.
pub fn with_sub_router_make_fn<Layer>(
self,
prefix: impl AsRef<str>,
configure_router: impl FnOnce(Router<State, L, O, E>) -> Router<State, Layer, O, E>,
) -> Router<State, L, O, E>
pub fn with_sub_router_make_fn<Layer>( self, prefix: impl AsRef<str>, configure_router: impl FnOnce(Router<State, L, O, E>) -> Router<State, Layer, O, E>, ) -> Router<State, L, O, E>
register a nested router under a prefix (path).
The prefix is used to match the request path and strip it from the request URI.
Note: this sub-router is configured with the same State this router has.
pub fn set_sub_router_make_fn<Layer>(
&mut self,
prefix: impl AsRef<str>,
configure_router: impl FnOnce(Router<State, L, O, E>) -> Router<State, Layer, O, E>,
) -> &mut Router<State, L, O, E>
pub fn set_sub_router_make_fn<Layer>( &mut self, prefix: impl AsRef<str>, configure_router: impl FnOnce(Router<State, L, O, E>) -> Router<State, Layer, O, E>, ) -> &mut Router<State, L, O, E>
register a nested router under a prefix (path).
The prefix is used to match the request path and strip it from the request URI.
Note: this sub-router is configured with the same State this router has.
pub fn with_endpoint_service<I, T>(
self,
prefix: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointService<T>,
L: Layer<<I as IntoEndpointService<T>>::Service>,
<L as Layer<<I as IntoEndpointService<T>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_endpoint_service<I, T>(
self,
prefix: impl AsRef<str>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointService<T>,
L: Layer<<I as IntoEndpointService<T>>::Service>,
<L as Layer<<I as IntoEndpointService<T>>::Service>>::Service: Service<Request, Output = O, Error = E>,
Register a nested endpoint service under a prefix (path).
The prefix is used to match the request path and strip it from the request URI. Endpoint layer is applied to this sub-service.
Warning: If a sub-service is a plain Service, not an endpoint function,
it has no notion of the state this router has. If you want to create a sub-router
that shares the same state this router has, use Router::with_sub_router_make_fn instead.
pub fn set_endpoint_service<I, T>(
&mut self,
prefix: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointService<T>,
L: Layer<<I as IntoEndpointService<T>>::Service>,
<L as Layer<<I as IntoEndpointService<T>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_endpoint_service<I, T>(
&mut self,
prefix: impl AsRef<str>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointService<T>,
L: Layer<<I as IntoEndpointService<T>>::Service>,
<L as Layer<<I as IntoEndpointService<T>>::Service>>::Service: Service<Request, Output = O, Error = E>,
Register a nested endpoint service under a prefix (path).
The prefix is used to match the request path and strip it from the request URI. Endpoint layer is applied to this sub-service.
Warning: If a sub-service is a plain Service, not an endpoint function,
it has no notion of the state this router has. If you want to create a sub-router
that shares the same state this router has, use Router::with_sub_router_make_fn instead.
pub fn with_sub_service<S>(
self,
prefix: impl AsRef<str>,
service: S,
) -> Router<State, L, O, E>
pub fn with_sub_service<S>( self, prefix: impl AsRef<str>, service: S, ) -> Router<State, L, O, E>
Register a nested service under a prefix (path).
The prefix is used to match the request path and strip it from the request URI.
Warning: This sub-service has no notion of the state this router has. If you want
to create a sub-router that shares the same state this router has, use Router::with_sub_router_make_fn instead.
Also, the endpoint layer is not applied to it, so its Output / Error must match those of the Router
If you need its type conversions, consider Router::with_endpoint_service
pub fn set_sub_service<S>(
&mut self,
prefix: impl AsRef<str>,
service: S,
) -> &mut Router<State, L, O, E>
pub fn set_sub_service<S>( &mut self, prefix: impl AsRef<str>, service: S, ) -> &mut Router<State, L, O, E>
Register a nested service under a prefix.
The prefix is used to match the request path and strip it from the request URI.
Warning: This sub-service has no notion of the state this router has. If you want
to create a sub-router that shares the same state this router has, use Router::with_sub_router_make_fn instead.
Also, the endpoint layer is not applied to it, so its Output / Error must match those of the Router
If you need its type conversions, consider Router::set_endpoint_service
pub fn with_match_route<I, T>(
self,
path: impl AsRef<str>,
matcher: HttpMatcher<Body>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_match_route<I, T>(
self,
path: impl AsRef<str>,
matcher: HttpMatcher<Body>,
service: I,
) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a route to the router with it’s matcher and service.
pub fn set_match_route<I, T>(
&mut self,
path: impl AsRef<str>,
matcher: HttpMatcher<Body>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_match_route<I, T>(
&mut self,
path: impl AsRef<str>,
matcher: HttpMatcher<Body>,
service: I,
) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
add a route to the router with it’s matcher and service.
pub fn with_not_found<I, T>(self, service: I) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn with_not_found<I, T>(self, service: I) -> Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
use the provided service when no route matches the request.
pub fn set_not_found<I, T>(&mut self, service: I) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
pub fn set_not_found<I, T>(&mut self, service: I) -> &mut Router<State, L, O, E>where
I: IntoEndpointServiceWithState<T, State>,
L: Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>,
<L as Layer<<I as IntoEndpointServiceWithState<T, State>>::Service>>::Service: Service<Request, Output = O, Error = E>,
use the provided service when no route matches the request.
Trait Implementations§
§impl<State, L, O, E> Service<Request> for Router<State, L, O, E>
impl<State, L, O, E> Service<Request> for Router<State, L, O, E>
§async fn serve(
&self,
req: Request,
) -> Result<<Router<State, L, O, E> as Service<Request>>::Output, <Router<State, L, O, E> as Service<Request>>::Error>
async fn serve( &self, req: Request, ) -> Result<<Router<State, L, O, E> as Service<Request>>::Output, <Router<State, L, O, E> as Service<Request>>::Error>
§fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
fn boxed(self) -> BoxService<Input, Self::Output, Self::Error>
Auto Trait Implementations§
impl<State = (), Layer = DefaultEndpointLayer, O = Response, E = RouterError> !Freeze for Router<State, Layer, O, E>
impl<State = (), Layer = DefaultEndpointLayer, O = Response, E = RouterError> !RefUnwindSafe for Router<State, Layer, O, E>
impl<State, Layer, O, E> Send for Router<State, Layer, O, E>
impl<State, Layer, O, E> Sync for Router<State, Layer, O, E>
impl<State, Layer, O, E> Unpin for Router<State, Layer, O, E>
impl<State, Layer, O, E> UnsafeUnpin for Router<State, Layer, O, E>where
Layer: UnsafeUnpin,
State: UnsafeUnpin,
impl<State = (), Layer = DefaultEndpointLayer, O = Response, E = RouterError> !UnwindSafe for Router<State, Layer, O, E>
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<S, Input, Connection> ConnectorService<Input> for S
impl<S, Input, Connection> ConnectorService<Input> for S
§type Connection = Connection
type Connection = Connection
ConnectorService§fn connect(
&self,
input: Input,
) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>, <S as ConnectorService<Input>>::Error>> + Send
fn connect( &self, input: Input, ) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Input>>::Connection, Input>, <S as ConnectorService<Input>>::Error>> + Send
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T, ReqBody, ResBody> GrpcService<ReqBody> for T
impl<T, ReqBody, ResBody> GrpcService<ReqBody> for T
§type ResponseBody = ResBody
type ResponseBody = ResBody
§fn serve(
&self,
request: Request<ReqBody>,
) -> impl Future<Output = Result<Response<<T as GrpcService<ReqBody>>::ResponseBody>, <T as GrpcService<ReqBody>>::Error>> + Send
fn serve( &self, request: Request<ReqBody>, ) -> impl Future<Output = Result<Response<<T as GrpcService<ReqBody>>::ResponseBody>, <T as GrpcService<ReqBody>>::Error>> + Send
§impl<S, Body> HttpClientExt for S
impl<S, Body> HttpClientExt for S
§type ExecuteResponse = Response<Body>
type ExecuteResponse = Response<Body>
execute method.§type ExecuteError = <S as Service<Request>>::Error
type ExecuteError = <S as Service<Request>>::Error
execute method.§fn get(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn get( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
GET request to a URL. Read more§fn post(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn post( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
POST request to a URL. Read more§fn put(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn put( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
PUT request to a URL. Read more§fn patch(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn patch( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
PATCH request to a URL. Read more§fn delete(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn delete( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
DELETE request to a URL. Read more§fn head(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn head( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
HEAD request to a URL. Read more§fn connect(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn connect( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
CONNECT request to a URL. Read more§fn request(
&self,
method: Method,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn request( &self, method: Method, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
§fn build_from_request<RequestBody>(
&self,
request: Request<RequestBody>,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn build_from_request<RequestBody>( &self, request: Request<RequestBody>, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
§fn execute(
&self,
request: Request,
) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
fn execute( &self, request: Request, ) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
Request. Read more§impl<S, Body> HttpClientWebSocketExt<Body> for S
impl<S, Body> HttpClientWebSocketExt<Body> for S
§fn websocket(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder] to be used to establish a WebSocket connection over http/1.1.§fn websocket_h2(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_h2( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder to be used to establish a WebSocket connection over h2.§fn websocket_with_request<RequestBody>(
&self,
req: Request<RequestBody>,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_with_request<RequestBody>( &self, req: Request<RequestBody>, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder starting from the given request. Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<S> IntoEndpointService<(S,)> for S
impl<S> IntoEndpointService<(S,)> for S
type Service = S
§fn into_endpoint_service(self) -> <S as IntoEndpointService<(S,)>>::Service
fn into_endpoint_service(self) -> <S as IntoEndpointService<(S,)>>::Service
rama_core::Service.§impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
impl<S, State> IntoEndpointServiceWithState<(S,), State> for S
type Service = S
§fn into_endpoint_service_with_state(
self,
_state: State,
) -> <S as IntoEndpointServiceWithState<(S,), State>>::Service
fn into_endpoint_service_with_state( self, _state: State, ) -> <S as IntoEndpointServiceWithState<(S,), State>>::Service
rama_core::Service with state.§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
§impl<V, F> ValueFormatter<&V> for F
impl<V, F> ValueFormatter<&V> for F
§fn format_value(writer: impl ValueWriter, value: &&V)
fn format_value(writer: impl ValueWriter, value: &&V)
value to writer§impl<V, F> ValueFormatter<Arc<V>> for F
impl<V, F> ValueFormatter<Arc<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Arc<V>)
fn format_value(writer: impl ValueWriter, value: &Arc<V>)
value to writer§impl<V, F> ValueFormatter<Box<V>> for F
impl<V, F> ValueFormatter<Box<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Box<V>)
fn format_value(writer: impl ValueWriter, value: &Box<V>)
value to writer§impl<V, F> ValueFormatter<Cow<'_, V>> for F
impl<V, F> ValueFormatter<Cow<'_, V>> for F
§fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
value to writer§impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
§fn format_value(writer: impl ValueWriter, value: &Option<V>)
fn format_value(writer: impl ValueWriter, value: &Option<V>)
value to writer