Struct async_ringbuf::producer::AsyncProducer
source · pub struct AsyncProducer<T, R: RbRef>where
R::Rb: AsyncRbWrite<T>,{ /* private fields */ }Implementations§
source§impl<T, R: RbRef> AsyncProducer<T, R>where
R::Rb: AsyncRbWrite<T>,
impl<T, R: RbRef> AsyncProducer<T, R>where R::Rb: AsyncRbWrite<T>,
pub fn from_base(base: Producer<T, R>) -> Self
pub fn as_base(&self) -> &Producer<T, R>
pub fn as_mut_base(&mut self) -> &mut Producer<T, R>
pub fn capacity(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn is_full(&self) -> bool
pub fn len(&self) -> usize
pub fn free_len(&self) -> usize
sourcepub fn push(&mut self, item: T) -> PushFuture<'_, T, R> ⓘ
pub fn push(&mut self, item: T) -> PushFuture<'_, T, R> ⓘ
Push item to the ring buffer waiting asynchronously if the buffer is full.
Future returns:
Ok- item successfully pushed.Err(item)- the corresponding consumer was dropped, item is returned back.
sourcepub fn push_iter<I: Iterator<Item = T>>(
&mut self,
iter: I
) -> PushIterFuture<'_, T, R, I> ⓘ
pub fn push_iter<I: Iterator<Item = T>>( &mut self, iter: I ) -> PushIterFuture<'_, T, R, I> ⓘ
Push items from iterator waiting asynchronously if the buffer is full.
Future returns:
Ok- iterator ended.Err(iter)- the corresponding consumer was dropped, remaining iterator is returned back.
sourcepub fn wait_free(&self, free_len: usize) -> WaitFreeFuture<'_, T, R> ⓘ
pub fn wait_free(&self, free_len: usize) -> WaitFreeFuture<'_, T, R> ⓘ
Wait for the buffer to have at least free_len free places for items or to close.
Panics if free_len is greater than buffer capacity.
source§impl<T: Copy, R: RbRef> AsyncProducer<T, R>where
R::Rb: AsyncRbWrite<T>,
impl<T: Copy, R: RbRef> AsyncProducer<T, R>where R::Rb: AsyncRbWrite<T>,
sourcepub fn push_slice<'a: 'b, 'b>(
&'a mut self,
slice: &'b [T]
) -> PushSliceFuture<'a, 'b, T, R> ⓘ
pub fn push_slice<'a: 'b, 'b>( &'a mut self, slice: &'b [T] ) -> PushSliceFuture<'a, 'b, T, R> ⓘ
Copy slice contents to the buffer waiting asynchronously if the buffer is full.
Future returns:
Ok- all slice contents are copied.Err(count)- the corresponding consumer was dropped, number of copied items returned.
Trait Implementations§
source§impl<R: RbRef> AsyncWrite for AsyncProducer<u8, R>where
R::Rb: AsyncRbWrite<u8>,
impl<R: RbRef> AsyncWrite for AsyncProducer<u8, R>where R::Rb: AsyncRbWrite<u8>,
source§fn poll_write(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &[u8]
) -> Poll<Result<usize>>
fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8] ) -> Poll<Result<usize>>
Attempt to write bytes from
buf into the object. Read moresource§fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<()>>
fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<()>>
Attempt to flush the object, ensuring that any buffered data reach
their destination. Read more
source§impl<T, R: RbRef> Drop for AsyncProducer<T, R>where
R::Rb: AsyncRbWrite<T>,
impl<T, R: RbRef> Drop for AsyncProducer<T, R>where R::Rb: AsyncRbWrite<T>,
source§impl<T, R: RbRef> Sink<T> for AsyncProducer<T, R>where
R::Rb: AsyncRbWrite<T>,
impl<T, R: RbRef> Sink<T> for AsyncProducer<T, R>where R::Rb: AsyncRbWrite<T>,
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>>
Attempts to prepare the
Sink to receive a value. Read moresource§fn start_send(self: Pin<&mut Self>, item: T) -> Result<(), Self::Error>
fn start_send(self: Pin<&mut Self>, item: T) -> Result<(), Self::Error>
Begin the process of sending a value to the sink.
Each call to this function must be preceded by a successful call to
poll_ready which returned Poll::Ready(Ok(())). Read moreimpl<T, R: RbRef> Unpin for AsyncProducer<T, R>where R::Rb: AsyncRbWrite<T>,
Auto Trait Implementations§
impl<T, R> RefUnwindSafe for AsyncProducer<T, R>where R: RefUnwindSafe, T: RefUnwindSafe,
impl<T, R> Send for AsyncProducer<T, R>where R: Send, T: Send,
impl<T, R> Sync for AsyncProducer<T, R>where R: Sync, T: Sync,
impl<T, R> UnwindSafe for AsyncProducer<T, R>where R: UnwindSafe, T: UnwindSafe,
Blanket Implementations§
§impl<W> AsyncWriteExt for Wwhere
W: AsyncWrite + ?Sized,
impl<W> AsyncWriteExt for Wwhere W: AsyncWrite + ?Sized,
§fn flush(&mut self) -> Flush<'_, Self>where
Self: Unpin,
fn flush(&mut self) -> Flush<'_, Self>where Self: Unpin,
Creates a future which will entirely flush this
AsyncWrite. Read more§fn close(&mut self) -> Close<'_, Self>where
Self: Unpin,
fn close(&mut self) -> Close<'_, Self>where Self: Unpin,
Creates a future which will entirely close this
AsyncWrite.§fn write<'a>(&'a mut self, buf: &'a [u8]) -> Write<'a, Self>where
Self: Unpin,
fn write<'a>(&'a mut self, buf: &'a [u8]) -> Write<'a, Self>where Self: Unpin,
Creates a future which will write bytes from
buf into the object. Read more§fn write_vectored<'a>(
&'a mut self,
bufs: &'a [IoSlice<'a>]
) -> WriteVectored<'a, Self>where
Self: Unpin,
fn write_vectored<'a>( &'a mut self, bufs: &'a [IoSlice<'a>] ) -> WriteVectored<'a, Self>where Self: Unpin,
Creates a future which will write bytes from
bufs into the object using vectored
IO operations. Read more§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>where
F: FnMut(U) -> Fut,
Fut: Future<Output = Result<Item, E>>,
E: From<Self::Error>,
Self: Sized,
fn with<U, Fut, F, E>(self, f: F) -> With<Self, Item, U, Fut, F>where F: FnMut(U) -> Fut, Fut: Future<Output = Result<Item, E>>, E: From<Self::Error>, Self: Sized,
Composes a function in front of the sink. Read more
§fn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F>where
F: FnMut(U) -> St,
St: Stream<Item = Result<Item, Self::Error>>,
Self: Sized,
fn with_flat_map<U, St, F>(self, f: F) -> WithFlatMap<Self, Item, U, St, F>where F: FnMut(U) -> St, St: Stream<Item = Result<Item, Self::Error>>, Self: Sized,
Composes a function in front of the sink. Read more
§fn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F>where
F: FnOnce(Self::Error) -> E,
Self: Sized,
fn sink_map_err<E, F>(self, f: F) -> SinkMapErr<Self, F>where F: FnOnce(Self::Error) -> E, Self: Sized,
Transforms the error returned by the sink.
§fn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E>where
Self: Sized,
Self::Error: Into<E>,
fn sink_err_into<E>(self) -> SinkErrInto<Self, Item, E>where Self: Sized, Self::Error: Into<E>,
Map this sink’s error to a different error type using the
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,
Adds a fixed-size buffer to the current sink. Read more
§fn fanout<Si>(self, other: Si) -> Fanout<Self, Si>where
Self: Sized,
Item: Clone,
Si: Sink<Item, Error = Self::Error>,
fn fanout<Si>(self, other: Si) -> Fanout<Self, Si>where Self: Sized, Item: Clone, Si: Sink<Item, Error = Self::Error>,
Fanout items to multiple sinks. Read more
§fn flush(&mut self) -> Flush<'_, Self, Item>where
Self: Unpin,
fn flush(&mut self) -> Flush<'_, Self, Item>where Self: Unpin,
Flush the sink, processing all pending items. Read more
§fn send(&mut self, item: Item) -> Send<'_, Self, Item>where
Self: Unpin,
fn send(&mut self, item: Item) -> Send<'_, Self, Item>where Self: Unpin,
A future that completes after the given item has been fully processed
into the sink, including flushing. Read more
§fn feed(&mut self, item: Item) -> Feed<'_, Self, Item>where
Self: Unpin,
fn feed(&mut self, item: Item) -> Feed<'_, Self, Item>where Self: Unpin,
A future that completes after the given item has been received
by the sink. Read more
§fn send_all<St, 'a>(&'a mut self, stream: &'a mut St) -> SendAll<'a, Self, St>where
St: TryStream<Ok = Item, Error = Self::Error> + Stream + Unpin + ?Sized,
Self: Unpin,
fn send_all<St, 'a>(&'a mut self, stream: &'a mut St) -> SendAll<'a, Self, St>where St: TryStream<Ok = Item, Error = Self::Error> + Stream + Unpin + ?Sized, Self: Unpin,
A future that completes after the given stream has been fully processed
into the sink, including flushing. Read more
§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,
A convenience method for calling [
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,
A convenience method for calling [
Sink::start_send] on Unpin
sink types.