Trait BodyExt
pub trait BodyExt: Body {
// Provided methods
fn frame(&mut self) -> Frame<'_, Self> ⓘ
where Self: Unpin { ... }
fn map_frame<F, B>(self, f: F) -> MapFrame<Self, F>
where Self: Sized,
F: FnMut(Frame<Self::Data>) -> Frame<B>,
B: Buf { ... }
fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
where Self: Sized,
F: FnMut(Self::Error) -> E { ... }
fn boxed(self) -> BoxBody<Self::Data, Self::Error>
where Self: Sized + Send + Sync + 'static { ... }
fn boxed_unsync(self) -> UnsyncBoxBody<Self::Data, Self::Error>
where Self: Sized + Send + 'static { ... }
fn collect(self) -> Collect<Self> ⓘ
where Self: Sized { ... }
fn with_trailers<F>(self, trailers: F) -> WithTrailers<Self, F>
where Self: Sized,
F: Future<Output = Option<Result<HeaderMap, Self::Error>>> { ... }
fn into_data_stream(self) -> BodyDataStream<Self>
where Self: Sized { ... }
}Expand description
An extension trait for http_body::Body adding various combinators and adapters
Provided Methods§
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 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 collect(self) -> Collect<Self> ⓘwhere
Self: Sized,
fn collect(self) -> Collect<Self> ⓘwhere
Self: Sized,
Turn this body into Collected body which will collect all the DATA frames
and trailers.
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.
The trailers will be sent when all previous frames have been sent and the trailers future
resolves.
§Example
use http::HeaderMap;
use http_body_util::{Full, BodyExt};
use bytes::Bytes;
async fn main() {
let (tx, rx) = tokio::sync::oneshot::channel::<HeaderMap>();
let body = Full::<Bytes>::from("Hello, World!")
// add trailers via a future
.with_trailers(async move {
match rx.await {
Ok(trailers) => Some(Ok(trailers)),
Err(_err) => None,
}
});
// compute the trailers in the background
tokio::spawn(async move {
let _ = tx.send(compute_trailers().await);
});
async fn compute_trailers() -> HeaderMap {
// ...
}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.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.