Skip to main content

PartDataStream

Struct PartDataStream 

Source
pub struct PartDataStream<S>
where S: Stream<Item = Result<Bytes, Error>> + Send + Unpin,
{ /* private fields */ }
Expand description

A self-contained stream produced by Part::take_data_stream.

The stream yields the part’s data chunks — each one non-empty, so a part with no data yields nothing at all — and ends at the closing delimiter \r\n--boundary. What follows the delimiter (the strict closing trailer, an epilogue, or another part) is not interpreted; call PartDataStream::into_final to obtain a FinalPartDataStream that yields any remaining data and enforces the strict closing trailer.

Implementations§

Source§

impl<S> PartDataStream<S>
where S: Stream<Item = Result<Bytes, Error>> + Send + Unpin,

Source

pub fn multipart_consumed(&self) -> u64

Returns the total number of multipart bytes consumed at the moment this stream was taken, excluding bytes retained in the internal buffer.

This is the value to subtract from the request Content-Length when deriving the exact file length. It does not count bytes yielded by this stream itself.

Source

pub fn into_final(self) -> FinalPartDataStream<S>

Converts this stream into a FinalPartDataStream, which yields any remaining data and then enforces the strict closing trailer.

No data is discarded: chunks already read stay with the caller, and chunks not yet read are yielded by the returned stream before the closing trailer is validated.

A stream that ended abnormally — with an error, or at end of stream before the delimiter — stays failed: the returned stream reports Error::IncompleteStreamPart instead of validating a trailer that was never reached.

Trait Implementations§

Source§

impl<S> Debug for PartDataStream<S>
where S: Stream<Item = Result<Bytes, Error>> + Send + Unpin,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<S> Stream for PartDataStream<S>
where S: Stream<Item = Result<Bytes, Error>> + Send + Unpin,

Source§

type Item = Result<Bytes, Error>

Values yielded by the stream.
Source§

fn poll_next( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Option<Self::Item>>

Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning None if the stream is exhausted. Read more
Source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the stream. Read more

Auto Trait Implementations§

§

impl<S> Freeze for PartDataStream<S>
where StreamBuffer<S>: Freeze,

§

impl<S> RefUnwindSafe for PartDataStream<S>
where StreamBuffer<S>: RefUnwindSafe,

§

impl<S> Send for PartDataStream<S>
where StreamBuffer<S>: Send,

§

impl<S> Sync for PartDataStream<S>
where StreamBuffer<S>: Sync,

§

impl<S> Unpin for PartDataStream<S>
where StreamBuffer<S>: Unpin,

§

impl<S> UnsafeUnpin for PartDataStream<S>
where StreamBuffer<S>: UnsafeUnpin,

§

impl<S> UnwindSafe for PartDataStream<S>
where StreamBuffer<S>: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<S, T, E> TryStream for S
where S: Stream<Item = Result<T, E>> + ?Sized,

Source§

type Ok = T

The type of successful values yielded by this future
Source§

type Error = E

The type of failures yielded by this future
Source§

fn try_poll_next( self: Pin<&mut S>, cx: &mut Context<'_>, ) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>

Poll this TryStream as if it were a Stream. Read more