Trait Body
pub trait Body
Trait representing a streaming body of a Request or Response.
Individual frames are streamed via the poll_frame function, which asynchronously yields
instances of [Frame<Data>].
Frames can contain a data buffer of type Self::Data. Frames can also contain an optional
set of trailers used to finalize the request/response exchange. This is mostly used when using
the HTTP/2.0 protocol.
The size_hint function provides insight into the total number of bytes that will be streamed.
Associated Types
type Data: Buf;Values yielded by the
Body.type Error;The error type this
Bodymight generate.
Required Methods
fn poll_frame(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Result<Frame<Self::Data>, Self::Error>>>Attempt to pull out the next frame of this stream.
Return value
This function returns:
Poll::Pendingif the next frame is not ready yet.Poll::Ready(Some(Ok(frame)))when the next frame is available.Poll::Ready(Some(Err(error)))when an error has been reached.Poll::Ready(None)means that all of the frames in this stream have been returned, and that the end of the stream has been reached.
If
Poll::Ready(Some(Err(error)))is returned, this body should be discarded.Once the end of the stream is reached, implementations should continue to return
Poll::Ready(None).
Provided Methods
fn is_end_stream(&self) -> boolA hint that may return
truewhen the end of stream has been reached.An end of stream means that
poll_framewill returnNone.A return value of
falsedoes not guarantee that a value will be returned frompoll_frame. Combinators or other implementations may not be able to know the end of stream has been reached for this hint.Returning
trueallows consumers of this body to optimize, such as not callingpoll_frameagain.fn size_hint(&self) -> SizeHintA hint that returns the bounds on the remaining length of the stream.
When the exact remaining length of the stream is known, the upper bound will be set and will equal the lower bound.