Struct Chain
pub struct Chain<A, B> { /* private fields */ }Available on crate features
http and std only.Expand description
A Body that yields every frame of first, then every frame of second.
Trailers of first are held back and merged into those of second (whose
values win on conflicts), as trailers must end the stream. An error of either
body ends the chain, so second is never polled after first failed.
This is also what makes a bounded collect reversible: the bytes already read
can be re-prepended in front of the unread remainder so the original
body can be forwarded untouched (see CollectError::into_full_body).
See BodyExt::chain for more information.
Implementations§
Trait Implementations§
§impl<A, B> Body for Chain<A, B>
impl<A, B> Body for Chain<A, B>
§fn poll_frame(
self: Pin<&mut Chain<A, B>>,
cx: &mut Context<'_>,
) -> Poll<Option<Result<Frame<<Chain<A, B> as Body>::Data>, <Chain<A, B> as Body>::Error>>>
fn poll_frame( self: Pin<&mut Chain<A, B>>, cx: &mut Context<'_>, ) -> Poll<Option<Result<Frame<<Chain<A, B> as Body>::Data>, <Chain<A, B> as Body>::Error>>>
Attempt to pull out the next frame of this stream. Read more
§fn is_end_stream(&self) -> bool
fn is_end_stream(&self) -> bool
A hint that may return
true when the end of stream has been reached. Read moreimpl<'__pin, A, B> Unpin for Chain<A, B>where
<PinnedFieldsOfHelperStruct<__Origin<'__pin, A, B>> as PinnedFieldsOfHelperTrait>::Actual: Unpin,
Auto Trait Implementations§
impl<A, B> Freeze for Chain<A, B>where
Inner<A, B>: Freeze,
impl<A, B> RefUnwindSafe for Chain<A, B>where
Inner<A, B>: RefUnwindSafe,
impl<A, B> Send for Chain<A, B>where
Inner<A, B>: Send,
impl<A, B> Sync for Chain<A, B>where
Inner<A, B>: Sync,
impl<A, B> UnsafeUnpin for Chain<A, B>where
Inner<A, B>: UnsafeUnpin,
impl<A, B> UnwindSafe for Chain<A, B>where
Inner<A, B>: UnwindSafe,
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
§impl<T> BodyExt for T
impl<T> BodyExt for T
§fn frame(&mut self) -> Frame<'_, Self> ⓘwhere
Self: Unpin,
fn frame(&mut self) -> Frame<'_, Self> ⓘwhere
Self: Unpin,
Returns a future that resolves to the next
Frame, if any.§fn inspect_frame<F>(self, f: F) -> InspectFrame<Self, F>
fn inspect_frame<F>(self, f: F) -> InspectFrame<Self, F>
A body that calls a function with a reference to each frame before yielding it.
§fn capture<S>(self, sink: S) -> CaptureBody<Self, S>
fn capture<S>(self, sink: S) -> CaptureBody<Self, S>
Forward this byte body while asynchronously sending owned frame copies to a sink.
§fn capture_buffered(
self,
limit: CaptureLimit,
) -> (CaptureBody<Self, BufferedBodyCapture>, CaptureHandle)
fn capture_buffered( self, limit: CaptureLimit, ) -> (CaptureBody<Self, BufferedBodyCapture>, CaptureHandle)
Forward this byte body while retaining a bounded or unlimited copy in memory.
§fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
A body that calls a function with a reference to an error before yielding it.
§fn boxed_unsync(self) -> UnsyncBoxBody<Self::Data, Self::Error>
fn boxed_unsync(self) -> UnsyncBoxBody<Self::Data, Self::Error>
Turn this body into a boxed trait object that is !Sync.
§fn limited(self, limit: usize) -> Limited<Self>where
Self: Sized,
fn limited(self, limit: usize) -> Limited<Self>where
Self: Sized,
Turn this body into a
Limited body with the given limit.§fn collect_with(self, opts: CollectOptions) -> CollectWith<Self> ⓘ
fn collect_with(self, opts: CollectOptions) -> CollectWith<Self> ⓘ
Collect this body, but bounded by the size cap and/or timeout in
CollectOptions. Read more§fn with_trailers<F>(self, trailers: F) -> WithTrailers<Self, F>
fn with_trailers<F>(self, trailers: F) -> WithTrailers<Self, F>
Add trailers to the body. Read more
§fn into_data_stream(self) -> BodyDataStream<Self>where
Self: Sized,
fn into_data_stream(self) -> BodyDataStream<Self>where
Self: Sized,
Turn this body into
BodyDataStream.§fn into_stream(self) -> BodyStream<Self>where
Self: Sized,
fn into_stream(self) -> BodyStream<Self>where
Self: Sized,
Turn this body into
BodyStream. Read moreSource§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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§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> ⓘ
Converts
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> ⓘ
Converts
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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Create a new
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more