MiddleWare

Struct MiddleWare 

Source
pub struct MiddleWare<'md, E> {
    pub marker: String,
    pub rank: i16,
    pub extensions: Extensions,
    /* private fields */
}
Expand description

Represents a medium that handles the dataflow of App

In practise, it handles every data structure’s in-and-out during execution according to the marker and rank

Fields§

§marker: String§rank: i16§extensions: Extensions

Implementations§

Source§

impl<'md, E> MiddleWare<'md, E>

Source

pub fn builder() -> MiddleWareBuilder<'md, E>

Create an instance of MiddleWareBuilder that used to build a MiddleWare

§Examples
async fn handle_task(&mut Vec<Task>, &mut App<E>) {}
let middleware = Middleware::builder()
    .task(handle_task)
    .build("marker");
Source

pub fn rank(&self) -> i16

get the rank of MiddleWare

§Examples
async fn handle_task(&mut Vec<Task>, &mut App<E>) {}
let middleware = MiddleWare::builder()
    .rank(1)
    .build("marker");
assert_eq!(middleware.rank(), 0);
Source

pub fn rank_mut(&mut self) -> &mut i16

get mutable reference to rank of MiddleWare

§Examples
async fn handle_task(&mut Vec<Task>, &mut App<E>) {}
let middleware = MiddleWare::builder()
    .task(handle_task)
    .build("marker");
middleware.rank_mut() = 3;
assert_eq!(middleware.rank(), 3);
Source

pub fn extensions_mut(&mut self) -> &mut Extensions

mutate the extensions of MiddleWare

§Examples
let mut middleware = Middleware::builder()
    .extensions(1i32)
    .build("marker");
middleware.extension_mut().insert(2i32);
Source

pub fn extensions(&self) -> &Extensions

get extensions of MiddleWare

§Examples
let middleware = Middleware::builder()
    .extensions(1i32)
    .build("marker");
assert_eq!(middleware.extensions().get::<i32>(), 1);
Source

pub fn task_mut( self, task: &'md dyn for<'a> Fn(&'a mut Vec<Task>, &'a mut App<E>) -> BoxFuture<'a, ()>, ) -> Self

Set the Task handler of MiddleWare, if not called, the default value is None

§Examples
async fn handle_task(_: &mut Vec<Task>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .task_mut(&handle_task)
    .build("marker");
assert! (middleware.handle_task.is_some())
Source

pub fn task( &self, ) -> Option<&'md dyn for<'a> Fn(&'a mut Vec<Task>, &'a mut App<E>) -> BoxFuture<'a, ()>>

Get the shared reference of Task handler of MiddleWare, if not set before, None is returned

§Examples
async fn handle_task(_: &mut Vec<Task>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .task_mut(&handle_task)
    .build("marker");
assert_eq! (middleware.task (), Some(handle_task))
Source

pub fn affix_mut( self, affix: &'md dyn for<'a> Fn(&'a mut Vec<Affix>, &'a mut App<E>) -> BoxFuture<'a, ()>, ) -> Self

Set the Affix handler of MiddleWare, if not called, the default value is None

§Examples
async fn handle_affix(_: &mut Vec<Affix>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .affix_mut(&handle_affix)
    .build("marker");
assert! (middleware.handle_affix.is_some())
Source

pub fn affix( &self, ) -> Option<&'md dyn for<'a> Fn(&'a mut Vec<Affix>, &'a mut App<E>) -> BoxFuture<'a, ()>>

Get the shared reference of Affix handler of MiddleWare, if not set before, None is returned

§Examples
async fn handle_affix(_: &mut Vec<Affix>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .affix_mut(&handle_affix)
    .build("marker");
assert_eq! (middleware.affix (), Some(handle_affix))
Source

pub fn entity_mut( self, entity: &'md dyn for<'a> Fn(&'a mut Vec<E>, &'a mut App<E>) -> BoxFuture<'a, ()>, ) -> Self

Set the E handler of MiddleWare, if not called, the default value is None

§Examples
async fn handle_entity(_: &mut Vec<E>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .entity_mut(&handle_entity)
    .build("marker");
assert! (middleware.handle_entity.is_some())
Source

pub fn entity( &self, ) -> Option<&'md dyn for<'a> Fn(&'a mut Vec<E>, &'a mut App<E>) -> BoxFuture<'a, ()>>

Get the shared reference of E handler of MiddleWare, if not set before, None is returned

§Examples
async fn handle_entity(_: &mut Vec<E>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .entity_mut(&handle_entity)
    .build("marker");
assert_eq! (middleware.entity (), Some(handle_entity))
Source

pub fn req_mut( self, req: &'md dyn for<'a> Fn(&'a mut Vec<Request>, &'a mut App<E>) -> BoxFuture<'a, ()>, ) -> Self

Set the Request handler of MiddleWare, if not called, the default value is None

§Examples
async fn handle_req(_: &mut Vec<Request>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .req_mut(&handle_req)
    .build("marker");
assert! (middleware.handle_req.is_some())
Source

pub fn req( &self, ) -> Option<&'md dyn for<'a> Fn(&'a mut Vec<Request>, &'a mut App<E>) -> BoxFuture<'a, ()>>

Get the shared reference of Request handler of MiddleWare, if not set before, None is returned

§Examples
async fn handle_req(_: &mut Vec<Request>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .req_mut(&handle_req)
    .build("marker");
assert_eq! (middleware.req (), Some(handle_req))
Source

pub fn res_mut( self, res: &'md dyn for<'a> Fn(&'a mut Vec<Response>, &'a mut App<E>) -> BoxFuture<'a, ()>, ) -> Self

Set the Response handler of MiddleWare, if not called, the default value is None

§Examples
async fn handle_res(_: &mut Vec<Response>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .res_mut(&handle_res)
    .build("marker");
assert! (middleware.handle_res.is_some())
Source

pub fn res( &self, ) -> Option<&'md dyn for<'a> Fn(&'a mut Vec<Response>, &'a mut App<E>) -> BoxFuture<'a, ()>>

Get the shared reference of Response handler of MiddleWare, if not set before, None is returned

§Examples
async fn handle_res(_: &mut Vec<Response>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .res_mut(&handle_res)
    .build("marker");
assert_eq! (middleware.res (), Some(handle_res))
Source

pub fn err_mut( self, err: &'md dyn for<'a> Fn(&'a mut Vec<Result<Response, MetaResponse>>, &'a mut App<E>) -> BoxFuture<'a, ()>, ) -> Self

Set the Result<Response, MetaResponse> handler of MiddleWare, if not called, the default value is None

§Examples
async fn handle_err(_: &mut Vec<Result<Response, MetaResponse>>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .err_mut(&handle_err)
    .build("marker");
assert! (middleware.handle_err.is_some())
Source

pub fn err( &self, ) -> Option<&'md dyn for<'a> Fn(&'a mut Vec<Result<Response, MetaResponse>>, &'a mut App<E>) -> BoxFuture<'a, ()>>

Get the shared reference of Result<Response, MetaResponse> handler of MiddleWare, if not set before, None is returned

§Examples
async fn handle_err(_: &mut Vec<Result<Response, MetaResponse>>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .err_mut(&handle_err)
    .build("marker");
assert_eq! (middleware.err (), Some(handle_err))
Source

pub fn yerr_mut( self, yerr: &'md dyn for<'a> Fn(&'a mut Vec<Result<Response, MetaResponse>>, &'a mut App<E>) -> BoxFuture<'a, ()>, ) -> Self

Set the Result<Response, MetaResponse> handler of MiddleWare, if not called, the default value is None

§Examples
async fn handle_yerr(_: &mut Vec<Result<Response, MetaResponse>>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .yerr_mut(&handle_yerr)
    .build("marker");
assert! (middleware.handle_yerr.is_some())
Source

pub fn yerr( &self, ) -> Option<&'md dyn for<'a> Fn(&'a mut Vec<Result<Response, MetaResponse>>, &'a mut App<E>) -> BoxFuture<'a, ()>>

Get the shared reference of Result<Response, MetaResponse> handler of MiddleWare, if not set before, None is returned

§Examples
async fn handle_yerr(_: &mut Vec<Result<Response, MetaResponse>>, _: &mut App<E>) {}
let middleware = MiddleWare::builder()
    .yerr_mut(&handle_yerr)
    .build("marker");
assert_eq! (middleware.yerr (), Some(handle_yerr))

Auto Trait Implementations§

§

impl<'md, E> Freeze for MiddleWare<'md, E>

§

impl<'md, E> !RefUnwindSafe for MiddleWare<'md, E>

§

impl<'md, E> !Send for MiddleWare<'md, E>

§

impl<'md, E> !Sync for MiddleWare<'md, E>

§

impl<'md, E> Unpin for MiddleWare<'md, E>

§

impl<'md, E> !UnwindSafe for MiddleWare<'md, E>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more