use bytes::{Buf, Bytes}; use std::convert::Infallible; use std::ops; use std::pin::Pin; use std::task::{Context, Poll};
/// 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. pubtrait Body { /// Values yielded by the `Body`. type Data: Buf;
/// The error type this `Body` might generate. type Error;
#[allow(clippy::type_complexity)] /// Attempt to pull out the next data buffer of this stream. fn poll_frame( self: Pin<&mutSelf>,
cx: &mut Context<'_>,
) -> Poll<Option<Result<Frame<Self::Data>, Self::Error>>>;
/// Returns `true` when the end of stream has been reached. /// /// An end of stream means that `poll_frame` will return `None`. /// /// A return value of `false` **does not** guarantee that a value will be /// returned from `poll_frame`. fn is_end_stream(&self) -> bool { false
}
/// 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. fn size_hint(&self) -> SizeHint {
SizeHint::default()
}
}
impl<T: Body + Unpin + ?Sized> Body for &mut T { type Data = T::Data; type Error = T::Error;
impl<P> Body for Pin<P> where
P: Unpin + ops::DerefMut,
P::Target: Body,
{ type Data = <<P as ops::Deref>::Target as Body>::Data; type Error = <<P as ops::Deref>::Target as Body>::Error;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.