Streaming

Struct Streaming 

Source
pub struct Streaming<T = String, E = ()> { /* private fields */ }
Expand description

A streaming payload.

§Frames and Chunking

The streaming payload sends and receives data in discrete chunks or “frames”. The size is converted to hex and sent before each chunk, followed by a CRLF, the chunk data, and another CRLF.

This mimics actual HTTP chunked transfer encoding, but allows us to define our own framing protocol on top of it.

Arbitrary bytes can be encoded between these frames, but the frames do come with some overhead.

§Browser Support for Streaming Input

Browser fetch requests do not currently support full request duplexing, which means that that they do not begin handling responses until the full request has been sent.

This means that if you use a streaming input encoding, the input stream needs to end before the output will begin.

Streaming requests are only allowed over HTTP2 or HTTP3.

Also note that not all browsers support streaming bodies to servers.

Implementations§

Source§

impl<T: 'static + Send, E> Streaming<T, E>

Source

pub fn new(value: impl Stream<Item = T> + Send + 'static) -> Self

Creates a new stream from the given stream.

Source

pub async fn next(&mut self) -> Option<Result<T, StreamingError>>

Returns the next item in the stream, or None if the stream has ended.

Source

pub fn into_inner(self) -> impl Stream<Item = Result<T, StreamingError>> + Send

Consumes the wrapper, returning the inner stream.

Trait Implementations§

Source§

impl<T> Debug for Streaming<T>

Source§

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

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

impl<T, E: Encoding> Debug for Streaming<T, E>

Source§

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

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

impl<T, S, U, E> From<S> for Streaming<T, E>
where S: Stream<Item = U> + Send + 'static, U: Into<T>, T: 'static + Send, E: Encoding,

Source§

fn from(value: S) -> Self

Converts to this type from the input type.
Source§

impl<S> FromRequest<S> for Streaming<String>

Source§

type Rejection = ServerFnError

If the extractor fails it’ll use this “rejection” type. A rejection is a kind of error that can be converted into a response.
Source§

fn from_request( req: Request, _state: &S, ) -> impl Future<Output = Result<Self, Self::Rejection>> + Send

Perform the extraction.
Source§

impl<T: DeserializeOwned + Serialize + 'static + Send, E: Encoding, S> FromRequest<S> for Streaming<T, E>

Source§

type Rejection = ServerFnError

If the extractor fails it’ll use this “rejection” type. A rejection is a kind of error that can be converted into a response.
Source§

fn from_request( req: Request, _state: &S, ) -> impl Future<Output = Result<Self, Self::Rejection>> + Send

Perform the extraction.
Source§

impl FromResponse for Streaming<String>

Source§

fn from_response( res: ClientResponse, ) -> impl Future<Output = Result<Self, ServerFnError>>

Source§

impl FromResponse for Streaming<Bytes>

Source§

fn from_response( res: ClientResponse, ) -> impl Future<Output = Result<Self, ServerFnError>>

Source§

impl<T: DeserializeOwned + Serialize + 'static + Send, E: Encoding> FromResponse for Streaming<T, E>

Source§

fn from_response( res: ClientResponse, ) -> impl Future<Output = Result<Self, ServerFnError>>

Source§

impl IntoRequest for Streaming<String>

Source§

fn into_request( self, builder: ClientRequest, ) -> impl Future<Output = Result<ClientResponse, RequestError>> + 'static

Source§

impl<T: DeserializeOwned + Serialize + 'static + Send, E: Encoding> IntoRequest for Streaming<T, E>

Source§

fn into_request( self, builder: ClientRequest, ) -> impl Future<Output = Result<ClientResponse, RequestError>> + 'static

Source§

impl IntoResponse for Streaming<String>

Source§

fn into_response(self) -> Response

Create a response.
Source§

impl IntoResponse for Streaming<Bytes>

Source§

fn into_response(self) -> Response

Create a response.
Source§

impl<T: DeserializeOwned + Serialize + 'static, E: Encoding> IntoResponse for Streaming<T, E>

Source§

fn into_response(self) -> Response

Create a response.

Auto Trait Implementations§

§

impl<T, E> Freeze for Streaming<T, E>

§

impl<T = String, E = ()> !RefUnwindSafe for Streaming<T, E>

§

impl<T, E> Send for Streaming<T, E>
where E: Send,

§

impl<T = String, E = ()> !Sync for Streaming<T, E>

§

impl<T, E> Unpin for Streaming<T, E>
where E: Unpin,

§

impl<T = String, E = ()> !UnwindSafe for Streaming<T, E>

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> InitializeFromFunction<T> for T

Source§

fn initialize_from_function(f: fn() -> T) -> T

Create an instance of this type from an initialization function
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<Ret> SpawnIfAsync<(), Ret> for Ret

Source§

fn spawn(self) -> Ret

Spawn the value into the dioxus runtime if it is an async block
Source§

impl<T, O> SuperFrom<T> for O
where O: From<T>,

Source§

fn super_from(input: T) -> O

Convert from a type to another type.
Source§

impl<T, O, M> SuperInto<O, M> for T
where O: SuperFrom<T, M>,

Source§

fn super_into(self) -> O

Convert from a type to another type.
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,