pub struct IncomingBody<'a, R> { /* private fields */ }Expand description
A pull body borrowing the connection’s input lane. Returning it as the response body provides streaming echo and managed duplex tunnels without boxing, queueing, spawning, or transferring socket ownership.
Reads are cancellation safe: dropping a pending read, or cancelling its
wait, loses no input, and a later read resumes at the same position. This
relies on R transferring bytes only within a read_into poll that returns
them, as scheduler socket readers and the TLS stream do.
Trait Implementations§
Source§impl<R> Drop for IncomingBody<'_, R>
impl<R> Drop for IncomingBody<'_, R>
Source§impl<R: ReadableStream> ReadableBody for IncomingBody<'_, R>
impl<R: ReadableStream> ReadableBody for IncomingBody<'_, R>
type Error = Error
Source§fn may_have_trailers(&self) -> bool
fn may_have_trailers(&self) -> bool
Whether this body can emit trailing headers. HTTP/1 needs this before
reading to choose chunked framing, even when the data length is known.
Returning false promises that no Headers frame will be produced.
Source§fn is_ready(&self) -> bool
fn is_ready(&self) -> bool
Whether another read can proceed without waiting for produced data. Read more
Source§fn is_empty(&self) -> bool
fn is_empty(&self) -> bool
Whether no unread payload frames remain. False can mean unknown; an open
queue with no frames is not exhausted. This does not suppress read errors.
Source§fn length(&self) -> Option<u64>
fn length(&self) -> Option<u64>
Total representation length, independent of the current read position.
Source§fn close(&mut self, _: Option<Error>)
fn close(&mut self, _: Option<Error>)
Abandon further application reads, optionally reporting their failure. Read more
Source§async fn read(
&mut self,
cancellation: &Cancellation,
) -> Result<BodyFrame<Vec<u8>>, Error>
async fn read( &mut self, cancellation: &Cancellation, ) -> Result<BodyFrame<Vec<u8>>, Error>
Read one owned frame. Pre-cancellation prevents consumption. The caller
stops after
frame.is_end(); subsequent reads return BodyFrame::End.
Headers occur at most once, after all data. Dropping a pending read is
not transport retirement, and must not lose an unreturned queued frame.fn is_rewindable(&self) -> bool
Auto Trait Implementations§
impl<'a, R> !UnwindSafe for IncomingBody<'a, R>
impl<'a, R> Freeze for IncomingBody<'a, R>where
&'a mut RequestReader<R>: Freeze,
impl<'a, R> RefUnwindSafe for IncomingBody<'a, R>where
&'a mut RequestReader<R>: RefUnwindSafe,
impl<'a, R> Send for IncomingBody<'a, R>where
&'a mut RequestReader<R>: Send,
impl<'a, R> Sync for IncomingBody<'a, R>where
&'a mut RequestReader<R>: Sync,
impl<'a, R> Unpin for IncomingBody<'a, R>where
&'a mut RequestReader<R>: Unpin,
impl<'a, R> UnsafeUnpin for IncomingBody<'a, R>where
&'a mut RequestReader<R>: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more