Struct MapResult

Source
pub struct MapResult<S, F> { /* private fields */ }
Expand description

Maps this service’s result type (Result<Self::Response, Self::Error>) to a different value, regardless of whether the future succeeds or fails.

This is similar to the MapResponse and MapErr combinators, except that the same function is invoked when the service’s future completes, whether it completes successfully or fails. This function takes the Result returned by the service’s future, and returns a Result.

Like the standard library’s Result::and_then, this method can be used to implement control flow based on Result values. For example, it may be used to implement error recovery, by turning some Err responses from the service into Ok responses. Similarly, some successful responses from the service could be rejected, by returning an Err conditionally, depending on the value inside the [Ok.] Finally, this method can also be used to implement behaviors that must run when a service’s future completes, regardless of whether it succeeded or failed.

This method can be used to change the Response type of the service into a different type. It can also be used to change the Error type of the service.

Implementations§

Source§

impl<S, F> MapResult<S, F>

Source

pub const fn new(inner: S, f: F) -> Self

Creates a new MapResult service.

Source

pub fn get_ref(&self) -> &S

Gets a reference to the underlying service.

Source

pub fn into_inner(self) -> S

Consumes self, returning the underlying service.

Trait Implementations§

Source§

impl<S, F> Clone for MapResult<S, F>
where S: Clone, F: Clone,

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<S, F> Debug for MapResult<S, F>
where S: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<S, F, State, Request, Response, Error> Service<State, Request> for MapResult<S, F>
where S: Service<State, Request>, F: FnOnce(Result<S::Response, S::Error>) -> Result<Response, Error> + Clone + Send + Sync + 'static, State: Clone + Send + Sync + 'static, Request: Send + 'static, Response: Send + 'static, Error: Send + 'static,

Source§

type Response = Response

The type of response returned by the service.
Source§

type Error = Error

The type of error returned by the service.
Source§

async fn serve( &self, ctx: Context<State>, req: Request, ) -> Result<Self::Response, Self::Error>

Serve a response or error for the given request, using the given context.
Source§

fn boxed(self) -> BoxService<S, Request, Self::Response, Self::Error>

Box this service to allow for dynamic dispatch.

Auto Trait Implementations§

§

impl<S, F> Freeze for MapResult<S, F>
where S: Freeze, F: Freeze,

§

impl<S, F> RefUnwindSafe for MapResult<S, F>

§

impl<S, F> Send for MapResult<S, F>
where S: Send, F: Send,

§

impl<S, F> Sync for MapResult<S, F>
where S: Sync, F: Sync,

§

impl<S, F> Unpin for MapResult<S, F>
where S: Unpin, F: Unpin,

§

impl<S, F> UnwindSafe for MapResult<S, F>
where S: UnwindSafe, F: UnwindSafe,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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<S, StateIn, StateOut, RequestIn, RequestOut> RequestInspector<StateIn, RequestIn> for S
where S: Service<StateIn, RequestIn, Response = (Context<StateOut>, RequestOut)>, RequestIn: Send + 'static, RequestOut: Send + 'static, StateIn: Clone + Send + Sync + 'static, StateOut: Clone + Send + Sync + 'static,

Source§

type Error = <S as Service<StateIn, RequestIn>>::Error

The type of error returned by the service.
Source§

type RequestOut = RequestOut

Source§

type StateOut = StateOut

Source§

fn inspect_request( &self, ctx: Context<StateIn>, req: RequestIn, ) -> impl Future<Output = Result<(Context<<S as RequestInspector<StateIn, RequestIn>>::StateOut>, <S as RequestInspector<StateIn, RequestIn>>::RequestOut), <S as RequestInspector<StateIn, RequestIn>>::Error>> + Send

Inspect the request, modify it if needed or desired, and return it.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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