#[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 fn detect(
&self,
req: &mut Request,
path_state: &mut PathState,
) -> Option<DetectMatched>
pub 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 begining 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 only effective when the filter return 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 only effective when the filter return 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(self, host: impl Into<String>) -> Router
pub fn with_host(self, 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 get<H>(self, goal: H) -> Routerwhere
H: Handler,
pub fn get<H>(self, goal: H) -> Routerwhere
H: Handler,
Create 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<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> FutureTraceExt for Twhere
T: FutureExt,
impl<T> FutureTraceExt for Twhere
T: FutureExt,
source§fn with_current_context_span(self, otel_span: Span) -> WithContext<Self> ⓘ
fn with_current_context_span(self, otel_span: Span) -> 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