#[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 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(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,
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<Data> ApiSuccessResponse for Data
impl<Data> ApiSuccessResponse for Data
fn api_response<Meta>(self, meta: Option<Meta>) -> ApiResponse<Self, Meta>
fn api_response_without_meta<Meta>(self) -> ApiResponse<Self, Meta>
fn api_response_with_meta<Meta>(self, meta: Meta) -> ApiResponse<Self, Meta>
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> 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 moreSource§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