pub enum EitherBody<L, R = BoxBody> {
Left {
body: L,
},
Right {
body: R,
},
}
Expand description
An “either” type specialized for body types.
It is common, in middleware especially, to conditionally return an inner service’s unknown/
generic body B
type or return early with a new response. This type’s “right” variant
defaults to BoxBody
since error responses are the common case.
For example, middleware will often have type Response = ServiceResponse<EitherBody<B>>
.
This means that the inner service’s response body type maps to the Left
variant and the
middleware’s own error responses use the default Right
variant of BoxBody
. Of course,
there’s no reason it couldn’t use EitherBody<B, String>
instead if its alternative
responses have a known type.
Variants§
Implementations§
source§impl<L> EitherBody<L>
impl<L> EitherBody<L>
sourcepub fn new(body: L) -> EitherBody<L>
pub fn new(body: L) -> EitherBody<L>
Creates new EitherBody
left variant with a boxed right variant.
If the expected R
type will be inferred and is not BoxBody
then use the
left
constructor instead.
source§impl<L, R> EitherBody<L, R>
impl<L, R> EitherBody<L, R>
sourcepub fn left(body: L) -> EitherBody<L, R>
pub fn left(body: L) -> EitherBody<L, R>
Creates new EitherBody
using left variant.
sourcepub fn right(body: R) -> EitherBody<L, R>
pub fn right(body: R) -> EitherBody<L, R>
Creates new EitherBody
using right variant.
Trait Implementations§
source§impl<L, R> Clone for EitherBody<L, R>
impl<L, R> Clone for EitherBody<L, R>
source§fn clone(&self) -> EitherBody<L, R>
fn clone(&self) -> EitherBody<L, R>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<L, R> Debug for EitherBody<L, R>
impl<L, R> Debug for EitherBody<L, R>
source§impl<L, R> MessageBody for EitherBody<L, R>where
L: MessageBody + 'static,
R: MessageBody + 'static,
impl<L, R> MessageBody for EitherBody<L, R>where
L: MessageBody + 'static,
R: MessageBody + 'static,
source§fn poll_next(
self: Pin<&mut EitherBody<L, R>>,
cx: &mut Context<'_>,
) -> Poll<Option<Result<Bytes, <EitherBody<L, R> as MessageBody>::Error>>>
fn poll_next( self: Pin<&mut EitherBody<L, R>>, cx: &mut Context<'_>, ) -> Poll<Option<Result<Bytes, <EitherBody<L, R> as MessageBody>::Error>>>
source§fn try_into_bytes(self) -> Result<Bytes, EitherBody<L, R>>
fn try_into_bytes(self) -> Result<Bytes, EitherBody<L, R>>
impl<'__pin, L, R> Unpin for EitherBody<L, R>where
<PinnedFieldsOfHelperStruct<__Origin<'__pin, L, R>> as PinnedFieldsOfHelperTrait>::Actual: Unpin,
Auto Trait Implementations§
impl<L, R> Freeze for EitherBody<L, R>
impl<L, R> RefUnwindSafe for EitherBody<L, R>where
L: RefUnwindSafe,
R: RefUnwindSafe,
impl<L, R> Send for EitherBody<L, R>
impl<L, R> Sync for EitherBody<L, R>
impl<L, R> UnwindSafe for EitherBody<L, R>where
L: UnwindSafe,
R: UnwindSafe,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)