Skip to main content

FinalPartDataStream

Struct FinalPartDataStream 

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

The strict variant of a taken part stream.

Created with PartDataStream::into_final, it yields the remaining data chunks of the part — each one non-empty — and then validates the strict closing trailer: \r\n--boundary--\r\n followed by end of stream, with transport padding (SP / HTAB) allowed between the closing -- and the final CRLF, as RFC 2046 section 5.1.1 allows for a boundary line. An epilogue or another part is rejected because callers derive the exact content length from the multipart byte accounting.

Implementations§

Source§

impl<S> FinalPartDataStream<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 the 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.

Trait Implementations§

Source§

impl<S> Debug for FinalPartDataStream<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 FinalPartDataStream<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 FinalPartDataStream<S>
where StreamBuffer<S>: Freeze,

§

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

§

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

§

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

§

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

§

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

§

impl<S> UnwindSafe for FinalPartDataStream<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