#[non_exhaustive]pub struct Router {
pub routers: Vec<Router>,
pub filters: Vec<Box<dyn Filter>>,
pub hoops: Vec<Arc<dyn Handler>>,
pub goal: Option<Arc<dyn Handler>>,
/* private fields */
}Expand description
Route request to different handlers.
View module level documentation for more details.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.routers: Vec<Router>The children of current router.
filters: Vec<Box<dyn Filter>>The filters of current router.
hoops: Vec<Arc<dyn Handler>>The middlewares of current router.
goal: Option<Arc<dyn Handler>>The final handler to handle request of current router.
Implementations§
Source§impl Router
impl Router
Sourcepub fn routers_mut(&mut self) -> &mut Vec<Router>
pub fn routers_mut(&mut self) -> &mut Vec<Router>
Get current router’s children mutable reference.
Sourcepub fn hoops_mut(&mut self) -> &mut Vec<Arc<dyn Handler>>
pub fn hoops_mut(&mut self) -> &mut Vec<Arc<dyn Handler>>
Get current router’s middlewares mutable reference.
Sourcepub fn filters_mut(&mut self) -> &mut Vec<Box<dyn Filter>>
pub fn filters_mut(&mut self) -> &mut Vec<Box<dyn Filter>>
Get current router’s filters mutable reference.
Sourcepub async fn detect(
&self,
req: &mut Request,
path_state: &mut PathState,
) -> Option<DetectMatched>
pub async fn detect( &self, req: &mut Request, path_state: &mut PathState, ) -> Option<DetectMatched>
Detect current router is matched for current request.
Sourcepub fn unshift(self, router: Router) -> Router
pub fn unshift(self, router: Router) -> Router
Insert a router at the beginning of current router, shifting all routers after it to the right.
Sourcepub fn insert(self, index: usize, router: Router) -> Router
pub fn insert(self, index: usize, router: Router) -> Router
Insert a router at position index within current router, shifting all routers after it to the right.
Sourcepub fn append(self, others: &mut Vec<Router>) -> Router
pub fn append(self, others: &mut Vec<Router>) -> Router
Append all routers in a Vec as children of current router.
Sourcepub fn with_hoop<H>(hoop: H) -> Routerwhere
H: Handler,
pub fn with_hoop<H>(hoop: H) -> Routerwhere
H: Handler,
Add a handler as middleware, it will run the handler in current router or it’s descendants handle the request.
Sourcepub fn with_hoop_when<H, F>(hoop: H, filter: F) -> Router
pub fn with_hoop_when<H, F>(hoop: H, filter: F) -> Router
Add a handler as middleware, it will run the handler in current router or it’s descendants handle the request. This middleware is only effective when the filter returns true..
Sourcepub fn hoop<H>(self, hoop: H) -> Routerwhere
H: Handler,
pub fn hoop<H>(self, hoop: H) -> Routerwhere
H: Handler,
Add a handler as middleware, it will run the handler in current router or it’s descendants handle the request.
Sourcepub fn hoop_when<H, F>(self, hoop: H, filter: F) -> Router
pub fn hoop_when<H, F>(self, hoop: H, filter: F) -> Router
Add a handler as middleware, it will run the handler in current router or it’s descendants handle the request. This middleware is only effective when the filter returns true..
Sourcepub fn with_filter(filter: impl Filter) -> Router
pub fn with_filter(filter: impl Filter) -> Router
Create a new router and set filter.
Sourcepub fn with_filter_fn<T>(func: T) -> Router
pub fn with_filter_fn<T>(func: T) -> Router
Create a new router and set filter_fn.
Sourcepub fn then<F>(self, func: F) -> Router
pub fn then<F>(self, func: F) -> Router
When you want write router chain, this function will be useful, You can write your custom logic in FnOnce.
Sourcepub fn scheme(self, scheme: Scheme) -> Router
pub fn scheme(self, scheme: Scheme) -> Router
Add a SchemeFilter to current router.
Sourcepub fn with_host(host: impl Into<String>) -> Router
pub fn with_host(host: impl Into<String>) -> Router
Create a new HostFilter and set host filter.
Sourcepub fn port(self, port: u16) -> Router
pub fn port(self, port: u16) -> Router
Add a PortFilter to current router.
Sourcepub fn with_port(port: u16) -> Router
pub fn with_port(port: u16) -> Router
Create a new PortFilter and set port filter.
Sourcepub fn get<H>(self, goal: H) -> Routerwhere
H: Handler,
pub fn get<H>(self, goal: H) -> Routerwhere
H: Handler,
Creates a new child router with MethodFilter to filter GET method and set this child router’s handler.
Sourcepub fn post<H>(self, goal: H) -> Routerwhere
H: Handler,
pub fn post<H>(self, goal: H) -> Routerwhere
H: Handler,
Create a new child router with MethodFilter to filter post method and set this child router’s handler.
Sourcepub fn put<H>(self, goal: H) -> Routerwhere
H: Handler,
pub fn put<H>(self, goal: H) -> Routerwhere
H: Handler,
Create a new child router with MethodFilter to filter put method and set this child router’s handler.
Sourcepub fn delete<H>(self, goal: H) -> Routerwhere
H: Handler,
pub fn delete<H>(self, goal: H) -> Routerwhere
H: Handler,
Create a new child router with MethodFilter to filter delete method and set this child router’s handler.
Sourcepub fn patch<H>(self, goal: H) -> Routerwhere
H: Handler,
pub fn patch<H>(self, goal: H) -> Routerwhere
H: Handler,
Create a new child router with MethodFilter to filter patch method and set this child router’s handler.
Sourcepub fn head<H>(self, goal: H) -> Routerwhere
H: Handler,
pub fn head<H>(self, goal: H) -> Routerwhere
H: Handler,
Create a new child router with MethodFilter to filter head method and set this child router’s handler.
Sourcepub fn options<H>(self, goal: H) -> Routerwhere
H: Handler,
pub fn options<H>(self, goal: H) -> Routerwhere
H: Handler,
Create a new child router with MethodFilter to filter options method and set this child router’s handler.
Trait Implementations§
Source§impl RouterExt for Router
impl RouterExt for Router
Source§fn oapi_security(self, security: SecurityRequirement) -> Router
fn oapi_security(self, security: SecurityRequirement) -> Router
Source§fn oapi_securities<I>(self, iter: I) -> Routerwhere
I: IntoIterator<Item = SecurityRequirement>,
fn oapi_securities<I>(self, iter: I) -> Routerwhere
I: IntoIterator<Item = SecurityRequirement>,
Auto Trait Implementations§
impl Freeze for Router
impl !RefUnwindSafe for Router
impl Send for Router
impl Sync for Router
impl Unpin for Router
impl !UnwindSafe for Router
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§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
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request