pub struct FramedWrite<T, E> { /* private fields */ }codec only.Expand description
A Sink of frames encoded to an AsyncWrite.
For examples of how to use FramedWrite with a codec, see the
examples on the codec module.
§Cancellation safety
futures_util::sink::SinkExt::send: if send is used as the event in atokio::select!statement and some other branch completes first, then it is guaranteed that the message was not sent, but the message itself is lost.
Implementations§
Source§impl<T, E> FramedWrite<T, E>where
    T: AsyncWrite,
 
impl<T, E> FramedWrite<T, E>where
    T: AsyncWrite,
Sourcepub fn new(inner: T, encoder: E) -> FramedWrite<T, E>
 
pub fn new(inner: T, encoder: E) -> FramedWrite<T, E>
Creates a new FramedWrite with the given encoder.
Source§impl<T, E> FramedWrite<T, E>
 
impl<T, E> FramedWrite<T, E>
Sourcepub fn get_ref(&self) -> &T
 
pub fn get_ref(&self) -> &T
Returns a reference to the underlying I/O stream wrapped by
FramedWrite.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
Sourcepub fn get_mut(&mut self) -> &mut T
 
pub fn get_mut(&mut self) -> &mut T
Returns a mutable reference to the underlying I/O stream wrapped by
FramedWrite.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
Sourcepub fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut T>
 
pub fn get_pin_mut(self: Pin<&mut Self>) -> Pin<&mut T>
Returns a pinned mutable reference to the underlying I/O stream wrapped by
FramedWrite.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
Sourcepub fn into_inner(self) -> T
 
pub fn into_inner(self) -> T
Consumes the FramedWrite, returning its underlying I/O stream.
Note that care should be taken to not tamper with the underlying stream of data coming in as it may corrupt the stream of frames otherwise being worked with.
Sourcepub fn encoder_mut(&mut self) -> &mut E
 
pub fn encoder_mut(&mut self) -> &mut E
Returns a mutable reference to the underlying encoder.
Sourcepub fn map_encoder<C, F>(self, map: F) -> FramedWrite<T, C>where
    F: FnOnce(E) -> C,
 
pub fn map_encoder<C, F>(self, map: F) -> FramedWrite<T, C>where
    F: FnOnce(E) -> C,
Maps the encoder E to C, preserving the write buffer
wrapped by Framed.
Sourcepub fn encoder_pin_mut(self: Pin<&mut Self>) -> &mut E
 
pub fn encoder_pin_mut(self: Pin<&mut Self>) -> &mut E
Returns a mutable reference to the underlying encoder.
Sourcepub fn write_buffer(&self) -> &BytesMut
 
pub fn write_buffer(&self) -> &BytesMut
Returns a reference to the write buffer.
Sourcepub fn write_buffer_mut(&mut self) -> &mut BytesMut
 
pub fn write_buffer_mut(&mut self) -> &mut BytesMut
Returns a mutable reference to the write buffer.
Sourcepub fn backpressure_boundary(&self) -> usize
 
pub fn backpressure_boundary(&self) -> usize
Returns backpressure boundary
Sourcepub fn set_backpressure_boundary(&mut self, boundary: usize)
 
pub fn set_backpressure_boundary(&mut self, boundary: usize)
Updates backpressure boundary
Trait Implementations§
Source§impl<T, U> Debug for FramedWrite<T, U>
 
impl<T, U> Debug for FramedWrite<T, U>
Source§impl<T, I, E> Sink<I> for FramedWrite<T, E>
 
impl<T, I, E> Sink<I> for FramedWrite<T, E>
Source§type Error = <E as Encoder<I>>::Error
 
type Error = <E as Encoder<I>>::Error
Source§fn poll_ready(
    self: Pin<&mut Self>,
    cx: &mut Context<'_>,
) -> Poll<Result<(), Self::Error>>
 
fn poll_ready( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>
Sink to receive a value. Read moreSource§fn start_send(self: Pin<&mut Self>, item: I) -> Result<(), Self::Error>
 
fn start_send(self: Pin<&mut Self>, item: I) -> Result<(), Self::Error>
poll_ready which returned Poll::Ready(Ok(())). Read moreSource§impl<T, D> Stream for FramedWrite<T, D>where
    T: Stream,
 
impl<T, D> Stream for FramedWrite<T, D>where
    T: Stream,
impl<'__pin, T, E> Unpin for FramedWrite<T, E>where
    PinnedFieldsOf<__Origin<'__pin, T, E>>: Unpin,
Auto Trait Implementations§
impl<T, E> Freeze for FramedWrite<T, E>
impl<T, E> RefUnwindSafe for FramedWrite<T, E>where
    T: RefUnwindSafe,
    E: RefUnwindSafe,
impl<T, E> Send for FramedWrite<T, E>
impl<T, E> Sync for FramedWrite<T, E>
impl<T, E> UnwindSafe for FramedWrite<T, E>where
    T: UnwindSafe,
    E: UnwindSafe,
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
§impl<T> Instrument for T
 
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
§impl<T, Item> SinkExt<Item> for Twhere
    T: Sink<Item> + ?Sized,
 
impl<T, Item> SinkExt<Item> for Twhere
    T: Sink<Item> + ?Sized,
§fn with<U, Fut, F, E>(self, f: F) -> With<Self, Item, U, Fut, F>
 
fn with<U, Fut, F, E>(self, f: F) -> With<Self, Item, U, Fut, F>
§fn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F>
 
fn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F>
§fn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F>
 
fn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F>
§fn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E>
 
fn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E>
Into trait. Read more§fn buffer(self, capacity: usize) -> Buffer<Self, Item>where
    Self: Sized,
 
fn buffer(self, capacity: usize) -> Buffer<Self, Item>where
    Self: Sized,
§fn flush(&mut self) -> Flush<'_, Self, Item>where
    Self: Unpin,
 
fn flush(&mut self) -> Flush<'_, Self, Item>where
    Self: Unpin,
§fn send(&mut self, item: Item) -> Send<'_, Self, Item>where
    Self: Unpin,
 
fn send(&mut self, item: Item) -> Send<'_, Self, Item>where
    Self: Unpin,
§fn feed(&mut self, item: Item) -> Feed<'_, Self, Item>where
    Self: Unpin,
 
fn feed(&mut self, item: Item) -> Feed<'_, Self, Item>where
    Self: Unpin,
§fn send_all<'a, St>(&'a mut self, stream: &'a mut St) -> SendAll<'a, Self, St>
 
fn send_all<'a, St>(&'a mut self, stream: &'a mut St) -> SendAll<'a, Self, St>
§fn left_sink<Si2>(self) -> Either<Self, Si2>where
    Si2: Sink<Item, Error = Self::Error>,
    Self: Sized,
 
fn left_sink<Si2>(self) -> Either<Self, Si2>where
    Si2: Sink<Item, Error = Self::Error>,
    Self: Sized,
§fn right_sink<Si1>(self) -> Either<Si1, Self>where
    Si1: Sink<Item, Error = Self::Error>,
    Self: Sized,
 
fn right_sink<Si1>(self) -> Either<Si1, Self>where
    Si1: Sink<Item, Error = Self::Error>,
    Self: Sized,
§fn poll_ready_unpin(
    &mut self,
    cx: &mut Context<'_>,
) -> Poll<Result<(), Self::Error>>where
    Self: Unpin,
 
fn poll_ready_unpin(
    &mut self,
    cx: &mut Context<'_>,
) -> Poll<Result<(), Self::Error>>where
    Self: Unpin,
Sink::poll_ready] on Unpin
sink types.§fn start_send_unpin(&mut self, item: Item) -> Result<(), Self::Error>where
    Self: Unpin,
 
fn start_send_unpin(&mut self, item: Item) -> Result<(), Self::Error>where
    Self: Unpin,
Sink::start_send] on Unpin
sink types.§impl<T> StreamExt for Twhere
    T: Stream + ?Sized,
 
impl<T> StreamExt for Twhere
    T: Stream + ?Sized,
§fn next(&mut self) -> Next<'_, Self>where
    Self: Unpin,
 
fn next(&mut self) -> Next<'_, Self>where
    Self: Unpin,
§fn into_future(self) -> StreamFuture<Self>
 
fn into_future(self) -> StreamFuture<Self>
§fn map<T, F>(self, f: F) -> Map<Self, F>
 
fn map<T, F>(self, f: F) -> Map<Self, F>
§fn enumerate(self) -> Enumerate<Self>where
    Self: Sized,
 
fn enumerate(self) -> Enumerate<Self>where
    Self: Sized,
§fn filter<Fut, F>(self, f: F) -> Filter<Self, Fut, F>
 
fn filter<Fut, F>(self, f: F) -> Filter<Self, Fut, F>
§fn filter_map<Fut, T, F>(self, f: F) -> FilterMap<Self, Fut, F>
 
fn filter_map<Fut, T, F>(self, f: F) -> FilterMap<Self, Fut, F>
§fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
 
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
§fn collect<C>(self) -> Collect<Self, C>
 
fn collect<C>(self) -> Collect<Self, C>
§fn unzip<A, B, FromA, FromB>(self) -> Unzip<Self, FromA, FromB>
 
fn unzip<A, B, FromA, FromB>(self) -> Unzip<Self, FromA, FromB>
§fn concat(self) -> Concat<Self>
 
fn concat(self) -> Concat<Self>
§fn count(self) -> Count<Self>where
    Self: Sized,
 
fn count(self) -> Count<Self>where
    Self: Sized,
§fn fold<T, Fut, F>(self, init: T, f: F) -> Fold<Self, Fut, T, F>
 
fn fold<T, Fut, F>(self, init: T, f: F) -> Fold<Self, Fut, T, F>
§fn any<Fut, F>(self, f: F) -> Any<Self, Fut, F>
 
fn any<Fut, F>(self, f: F) -> Any<Self, Fut, F>
true if any element in stream satisfied a predicate. Read more§fn all<Fut, F>(self, f: F) -> All<Self, Fut, F>
 
fn all<Fut, F>(self, f: F) -> All<Self, Fut, F>
true if all element in stream satisfied a predicate. Read more§fn flatten(self) -> Flatten<Self>where
    Self::Item: Stream,
    Self: Sized,
 
fn flatten(self) -> Flatten<Self>where
    Self::Item: Stream,
    Self: Sized,
§fn flatten_unordered(
    self,
    limit: impl Into<Option<usize>>,
) -> FlattenUnorderedWithFlowController<Self, ()>
 
fn flatten_unordered( self, limit: impl Into<Option<usize>>, ) -> FlattenUnorderedWithFlowController<Self, ()>
§fn flat_map_unordered<U, F>(
    self,
    limit: impl Into<Option<usize>>,
    f: F,
) -> FlatMapUnordered<Self, U, F>
 
fn flat_map_unordered<U, F>( self, limit: impl Into<Option<usize>>, f: F, ) -> FlatMapUnordered<Self, U, F>
StreamExt::map] but flattens nested Streams
and polls them concurrently, yielding items in any order, as they made
available. Read more§fn scan<S, B, Fut, F>(self, initial_state: S, f: F) -> Scan<Self, S, Fut, F>
 
fn scan<S, B, Fut, F>(self, initial_state: S, f: F) -> Scan<Self, S, Fut, F>
StreamExt::fold] that holds internal state
and produces a new stream. Read more§fn skip_while<Fut, F>(self, f: F) -> SkipWhile<Self, Fut, F>
 
fn skip_while<Fut, F>(self, f: F) -> SkipWhile<Self, Fut, F>
true. Read more§fn take_while<Fut, F>(self, f: F) -> TakeWhile<Self, Fut, F>
 
fn take_while<Fut, F>(self, f: F) -> TakeWhile<Self, Fut, F>
true. Read more§fn take_until<Fut>(self, fut: Fut) -> TakeUntil<Self, Fut>
 
fn take_until<Fut>(self, fut: Fut) -> TakeUntil<Self, Fut>
§fn for_each<Fut, F>(self, f: F) -> ForEach<Self, Fut, F>
 
fn for_each<Fut, F>(self, f: F) -> ForEach<Self, Fut, F>
§fn for_each_concurrent<Fut, F>(
    self,
    limit: impl Into<Option<usize>>,
    f: F,
) -> ForEachConcurrent<Self, Fut, F>
 
fn for_each_concurrent<Fut, F>( self, limit: impl Into<Option<usize>>, f: F, ) -> ForEachConcurrent<Self, Fut, F>
§fn take(self, n: usize) -> Take<Self>where
    Self: Sized,
 
fn take(self, n: usize) -> Take<Self>where
    Self: Sized,
n items of the underlying stream. Read more§fn skip(self, n: usize) -> Skip<Self>where
    Self: Sized,
 
fn skip(self, n: usize) -> Skip<Self>where
    Self: Sized,
n items of the underlying stream. Read more§fn catch_unwind(self) -> CatchUnwind<Self>where
    Self: Sized + UnwindSafe,
 
fn catch_unwind(self) -> CatchUnwind<Self>where
    Self: Sized + UnwindSafe,
§fn boxed<'a>(self) -> Pin<Box<dyn Stream<Item = Self::Item> + Send + 'a>>
 
fn boxed<'a>(self) -> Pin<Box<dyn Stream<Item = Self::Item> + Send + 'a>>
§fn boxed_local<'a>(self) -> Pin<Box<dyn Stream<Item = Self::Item> + 'a>>where
    Self: Sized + 'a,
 
fn boxed_local<'a>(self) -> Pin<Box<dyn Stream<Item = Self::Item> + 'a>>where
    Self: Sized + 'a,
§fn buffered(self, n: usize) -> Buffered<Self>
 
fn buffered(self, n: usize) -> Buffered<Self>
§fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>
 
fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>
§fn zip<St>(self, other: St) -> Zip<Self, St>where
    St: Stream,
    Self: Sized,
 
fn zip<St>(self, other: St) -> Zip<Self, St>where
    St: Stream,
    Self: Sized,
§fn chain<St>(self, other: St) -> Chain<Self, St>where
    St: Stream<Item = Self::Item>,
    Self: Sized,
 
fn chain<St>(self, other: St) -> Chain<Self, St>where
    St: Stream<Item = Self::Item>,
    Self: Sized,
§fn peekable(self) -> Peekable<Self>where
    Self: Sized,
 
fn peekable(self) -> Peekable<Self>where
    Self: Sized,
peek method. Read more§fn chunks(self, capacity: usize) -> Chunks<Self>where
    Self: Sized,
 
fn chunks(self, capacity: usize) -> Chunks<Self>where
    Self: Sized,
§fn ready_chunks(self, capacity: usize) -> ReadyChunks<Self>where
    Self: Sized,
 
fn ready_chunks(self, capacity: usize) -> ReadyChunks<Self>where
    Self: Sized,
§fn forward<S>(self, sink: S) -> Forward<Self, S>where
    S: Sink<Self::Ok, Error = Self::Error>,
    Self: Sized + TryStream,
 
fn forward<S>(self, sink: S) -> Forward<Self, S>where
    S: Sink<Self::Ok, Error = Self::Error>,
    Self: Sized + TryStream,
sink only.§fn split<Item>(self) -> (SplitSink<Self, Item>, SplitStream<Self>)where
    Self: Sized + Sink<Item>,
 
fn split<Item>(self) -> (SplitSink<Self, Item>, SplitStream<Self>)where
    Self: Sized + Sink<Item>,
sink only.§fn inspect<F>(self, f: F) -> Inspect<Self, F>
 
fn inspect<F>(self, f: F) -> Inspect<Self, F>
§fn left_stream<B>(self) -> Either<Self, B>where
    B: Stream<Item = Self::Item>,
    Self: Sized,
 
fn left_stream<B>(self) -> Either<Self, B>where
    B: Stream<Item = Self::Item>,
    Self: Sized,
§fn right_stream<B>(self) -> Either<B, Self>where
    B: Stream<Item = Self::Item>,
    Self: Sized,
 
fn right_stream<B>(self) -> Either<B, Self>where
    B: Stream<Item = Self::Item>,
    Self: Sized,
§fn poll_next_unpin(&mut self, cx: &mut Context<'_>) -> Poll<Option<Self::Item>>where
    Self: Unpin,
 
fn poll_next_unpin(&mut self, cx: &mut Context<'_>) -> Poll<Option<Self::Item>>where
    Self: Unpin,
Stream::poll_next] on Unpin
stream types.§fn select_next_some(&mut self) -> SelectNextSome<'_, Self>where
    Self: Unpin + FusedStream,
 
fn select_next_some(&mut self) -> SelectNextSome<'_, Self>where
    Self: Unpin + FusedStream,
§impl<S, T, E> TryStream for S
 
impl<S, T, E> TryStream for S
§impl<S> TryStreamExt for Swhere
    S: TryStream + ?Sized,
 
impl<S> TryStreamExt for Swhere
    S: TryStream + ?Sized,
§fn err_into<E>(self) -> ErrInto<Self, E>
 
fn err_into<E>(self) -> ErrInto<Self, E>
§fn map_ok<T, F>(self, f: F) -> MapOk<Self, F>
 
fn map_ok<T, F>(self, f: F) -> MapOk<Self, F>
§fn map_err<E, F>(self, f: F) -> MapErr<Self, F>
 
fn map_err<E, F>(self, f: F) -> MapErr<Self, F>
§fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F>
 
fn and_then<Fut, F>(self, f: F) -> AndThen<Self, Fut, F>
f. Read more§fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F>
 
fn or_else<Fut, F>(self, f: F) -> OrElse<Self, Fut, F>
f. Read more§fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>
 
fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>
§fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
 
fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
§fn into_stream(self) -> IntoStream<Self>where
    Self: Sized,
 
fn into_stream(self) -> IntoStream<Self>where
    Self: Sized,
§fn try_next(&mut self) -> TryNext<'_, Self>where
    Self: Unpin,
 
fn try_next(&mut self) -> TryNext<'_, Self>where
    Self: Unpin,
§fn try_for_each<Fut, F>(self, f: F) -> TryForEach<Self, Fut, F>
 
fn try_for_each<Fut, F>(self, f: F) -> TryForEach<Self, Fut, F>
§fn try_skip_while<Fut, F>(self, f: F) -> TrySkipWhile<Self, Fut, F>
 
fn try_skip_while<Fut, F>(self, f: F) -> TrySkipWhile<Self, Fut, F>
true. Read more§fn try_take_while<Fut, F>(self, f: F) -> TryTakeWhile<Self, Fut, F>
 
fn try_take_while<Fut, F>(self, f: F) -> TryTakeWhile<Self, Fut, F>
true. Read more§fn try_for_each_concurrent<Fut, F>(
    self,
    limit: impl Into<Option<usize>>,
    f: F,
) -> TryForEachConcurrent<Self, Fut, F>
 
fn try_for_each_concurrent<Fut, F>( self, limit: impl Into<Option<usize>>, f: F, ) -> TryForEachConcurrent<Self, Fut, F>
§fn try_collect<C>(self) -> TryCollect<Self, C>
 
fn try_collect<C>(self) -> TryCollect<Self, C>
§fn try_chunks(self, capacity: usize) -> TryChunks<Self>where
    Self: Sized,
 
fn try_chunks(self, capacity: usize) -> TryChunks<Self>where
    Self: Sized,
§fn try_ready_chunks(self, capacity: usize) -> TryReadyChunks<Self>where
    Self: Sized,
 
fn try_ready_chunks(self, capacity: usize) -> TryReadyChunks<Self>where
    Self: Sized,
§fn try_filter<Fut, F>(self, f: F) -> TryFilter<Self, Fut, F>
 
fn try_filter<Fut, F>(self, f: F) -> TryFilter<Self, Fut, F>
§fn try_filter_map<Fut, F, T>(self, f: F) -> TryFilterMap<Self, Fut, F>
 
fn try_filter_map<Fut, F, T>(self, f: F) -> TryFilterMap<Self, Fut, F>
§fn try_flatten_unordered(
    self,
    limit: impl Into<Option<usize>>,
) -> TryFlattenUnordered<Self>
 
fn try_flatten_unordered( self, limit: impl Into<Option<usize>>, ) -> TryFlattenUnordered<Self>
§fn try_flatten(self) -> TryFlatten<Self>
 
fn try_flatten(self) -> TryFlatten<Self>
§fn try_fold<T, Fut, F>(self, init: T, f: F) -> TryFold<Self, Fut, T, F>
 
fn try_fold<T, Fut, F>(self, init: T, f: F) -> TryFold<Self, Fut, T, F>
§fn try_concat(self) -> TryConcat<Self>
 
fn try_concat(self) -> TryConcat<Self>
§fn try_buffer_unordered(self, n: usize) -> TryBufferUnordered<Self>where
    Self::Ok: TryFuture<Error = Self::Error>,
    Self: Sized,
 
fn try_buffer_unordered(self, n: usize) -> TryBufferUnordered<Self>where
    Self::Ok: TryFuture<Error = Self::Error>,
    Self: Sized,
§fn try_buffered(self, n: usize) -> TryBuffered<Self>where
    Self::Ok: TryFuture<Error = Self::Error>,
    Self: Sized,
 
fn try_buffered(self, n: usize) -> TryBuffered<Self>where
    Self::Ok: TryFuture<Error = Self::Error>,
    Self: Sized,
§fn try_poll_next_unpin(
    &mut self,
    cx: &mut Context<'_>,
) -> Poll<Option<Result<Self::Ok, Self::Error>>>where
    Self: Unpin,
 
fn try_poll_next_unpin(
    &mut self,
    cx: &mut Context<'_>,
) -> Poll<Option<Result<Self::Ok, Self::Error>>>where
    Self: Unpin,
TryStream::try_poll_next] on Unpin
stream types.§fn into_async_read(self) -> IntoAsyncRead<Self>
 
fn into_async_read(self) -> IntoAsyncRead<Self>
io only.AsyncBufRead. Read more§fn try_all<Fut, F>(self, f: F) -> TryAll<Self, Fut, F>
 
fn try_all<Fut, F>(self, f: F) -> TryAll<Self, Fut, F>
Err is encountered or if an Ok item is found
that does not satisfy the predicate. Read more