pub struct Trailer { /* private fields */ }
Expand description
Holds the current state of a trailer for a response.
This object acts as a shared handle that can be cloned and polled from multiple threads to wait for and act on the response trailer.
There are two typical workflows for accessing trailer headers:
- If you are consuming the response body and then accessing the headers
afterward, then all trailers are guaranteed to have arrived (if any).
Trailer::try_get
will allow you to access them without extra overhead. - If you are handling trailers in a separate task, callback, or thread, then
either
Trailer::wait
orTrailer::wait_async
will allow you to wait for the trailer headers to arrive and then handle them.
Note that in either approach, trailer headers are delivered to your
application as a single HeaderMap
; it is not possible to handle
individual headers as they arrive.
Implementations§
Source§impl Trailer
impl Trailer
Sourcepub fn is_ready(&self) -> bool
pub fn is_ready(&self) -> bool
Returns true if the trailer has been received (if any).
The trailer will not be received until the body stream associated with this response has been fully consumed.
Sourcepub fn try_get(&self) -> Option<&HeaderMap>
pub fn try_get(&self) -> Option<&HeaderMap>
Attempt to get the trailer headers without blocking. Returns None
if
the trailer has not been received yet.
Sourcepub fn wait(&self) -> &HeaderMap
pub fn wait(&self) -> &HeaderMap
Block the current thread until the trailer headers arrive, and then return them.
This is a blocking operation! If you are writing an asynchronous
application, then you probably want to use Trailer::wait_async
instead.
Sourcepub fn wait_timeout(&self, timeout: Duration) -> Option<&HeaderMap>
pub fn wait_timeout(&self, timeout: Duration) -> Option<&HeaderMap>
Block the current thread until the trailer headers arrive or a timeout expires.
If the given timeout expired before the trailer arrived then None
is
returned.
This is a blocking operation! If you are writing an asynchronous
application, then you probably want to use Trailer::wait_async
instead.
Sourcepub async fn wait_async(&self) -> &HeaderMap
pub async fn wait_async(&self) -> &HeaderMap
Wait asynchronously until the trailer headers arrive, and then return them.