This trait represents a streaming body of a
The built-in implementation of this trait is
Body, in case you
don't need to customize a send stream for your own application.
A buffer of bytes representing a single chunk of a body.
The error type of this stream.
Poll for a
Stream::poll_next, this yields
the body ends, when it yields
fn poll_trailers(&mut self) -> Poll<Option<HeaderMap>, Self::Error>
Poll for an optional single
HeaderMap of trailers.
This should only be called after
poll_data has ended.
Note: Trailers aren't currently used for HTTP/1, only for HTTP/2.
fn is_end_stream(&self) -> bool
A hint that the
Body is complete, and doesn't need to be polled more.
This can be useful to determine if the there is any body or trailers
without having to poll. An empty
Body could return
true and hyper
would be able to know that only the headers need to be sent. Or, it can
also be checked after each
poll_data call, to allow hyper to try to
end the underlying stream with the last chunk, instead of needing to
send an extra
DATA frame just to mark the stream as finished.
As a hint, it is used to try to optimize, and thus is OK for a default
implementation to return
fn content_length(&self) -> Option<u64>
Return a length of the total bytes that will be streamed, if known.
If an exact size of bytes is known, this would allow hyper to send a
Content-Length header automatically, not needing to fall back to
This does not need to be kept updated after polls, it will only be called once to create the headers.