#[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.