pub struct Receiver<T, Codec = Json, const BUFFER: usize = remoc::::rch::mpsc::receiver::Receiver::{constant#0}, const MAX_ITEM_SIZE: usize = remoc::::rch::mpsc::receiver::Receiver::{constant#1}> { /* private fields */ }Expand description
Implementations§
Source§impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
Sourcepub async fn recv(&mut self) -> Result<Option<T>, RecvError>
pub async fn recv(&mut self) -> Result<Option<T>, RecvError>
Receives the next value for this receiver.
This function returns Ok(None) when all channel senders have been dropped.
When a receive error occurs due to a connection failure and other senders are still present, it is held back and returned after all other senders have been dropped or failed. Use error to check if such an error is present.
Sourcepub fn poll_recv(
&mut self,
cx: &mut Context<'_>,
) -> Poll<Result<Option<T>, RecvError>>
pub fn poll_recv( &mut self, cx: &mut Context<'_>, ) -> Poll<Result<Option<T>, RecvError>>
Polls to receive the next message on this channel.
This function returns Poll::Ready(Ok(None)) when all channel senders have been dropped.
When a receive error occurs due to a connection failure and other senders are still present, it is held back and returned after all other senders have been dropped or failed. Use error to check if such an error is present.
Sourcepub fn try_recv(&mut self) -> Result<T, TryRecvError>
pub fn try_recv(&mut self) -> Result<T, TryRecvError>
Tries to receive the next message on this channel, if one is immediately available.
This function returns Err(RecvError::Closed) when all channel senders have been dropped
and Err(RecvError::Empty) if no value to receive is currently available.
When a receive error occurs due to a connection failure and other senders are still present, it is held back and returned after all other senders have been dropped or failed. Use error to check if such an error is present.
Sourcepub fn blocking_recv(&mut self) -> Result<Option<T>, RecvError>
pub fn blocking_recv(&mut self) -> Result<Option<T>, RecvError>
Blocking receive to call outside of asynchronous contexts.
This function returns Ok(None) when the channel sender has been dropped.
§Panics
This function panics if called within an asynchronous execution context.
Sourcepub fn close(&mut self)
pub fn close(&mut self)
Closes the receiving half of a channel without dropping it.
This allows to process outstanding values while stopping the sender from sending new values.
Sourcepub fn error(&self) -> &Option<RecvError>
pub fn error(&self) -> &Option<RecvError>
Returns the first error that occurred during receiving due to a connection failure, but is being held back because other senders are still connected to this receiver.
Use take_error to clear it.
Sourcepub fn take_error(&mut self) -> Option<RecvError>
pub fn take_error(&mut self) -> Option<RecvError>
Sourcepub fn set_codec<NewCodec>(self) -> Receiver<T, NewCodec, BUFFER, MAX_ITEM_SIZE>
pub fn set_codec<NewCodec>(self) -> Receiver<T, NewCodec, BUFFER, MAX_ITEM_SIZE>
Sets the codec that will be used when sending this receiver to a remote endpoint.
Sourcepub fn set_buffer<const NEW_BUFFER: usize>(
self,
) -> Receiver<T, Codec, NEW_BUFFER, MAX_ITEM_SIZE>
pub fn set_buffer<const NEW_BUFFER: usize>( self, ) -> Receiver<T, Codec, NEW_BUFFER, MAX_ITEM_SIZE>
Sets the buffer size that will be used when sending this receiver to a remote endpoint.
Sourcepub fn max_item_size(&self) -> usize
pub fn max_item_size(&self) -> usize
The maximum item size in bytes.
Sourcepub fn set_max_item_size<const NEW_MAX_ITEM_SIZE: usize>(
self,
) -> Receiver<T, Codec, BUFFER, NEW_MAX_ITEM_SIZE>
pub fn set_max_item_size<const NEW_MAX_ITEM_SIZE: usize>( self, ) -> Receiver<T, Codec, BUFFER, NEW_MAX_ITEM_SIZE>
Sets the maximum item size in bytes.
Sourcepub fn remote_max_item_size(&self) -> Option<usize>
pub fn remote_max_item_size(&self) -> Option<usize>
The maximum item size of the remote sender.
If this is larger than max_item_size sending of oversized items will succeed but receiving will fail with a MaxItemSizeExceeded error.
Source§impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
Sourcepub fn distribute(
self,
wait_on_empty: bool,
) -> Distributor<T, Codec, BUFFER, MAX_ITEM_SIZE>
pub fn distribute( self, wait_on_empty: bool, ) -> Distributor<T, Codec, BUFFER, MAX_ITEM_SIZE>
Distribute received items over multiple receivers.
Each value is received by one of the receivers.
If wait_on_empty is true, the distributor waits if all subscribers are closed.
Otherwise it terminates.
Trait Implementations§
Source§impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Debug for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Debug for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
Source§impl<'de, T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Deserialize<'de> for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>where
T: RemoteSend,
Codec: Codec,
impl<'de, T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Deserialize<'de> for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>where
T: RemoteSend,
Codec: Codec,
Source§fn deserialize<D>(
deserializer: D,
) -> Result<Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
Deserializes the receiver after it has been received over a chmux channel.
Source§impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Drop for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Drop for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
Source§impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Serialize for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>where
T: RemoteSend,
Codec: Codec,
impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Serialize for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>where
T: RemoteSend,
Codec: Codec,
Source§fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
Serializes this receiver for sending over a chmux channel.
Source§impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Stream for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Stream for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
Source§fn poll_next(
self: Pin<&mut Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>>,
cx: &mut Context<'_>,
) -> Poll<Option<<Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE> as Stream>::Item>>
fn poll_next( self: Pin<&mut Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>>, cx: &mut Context<'_>, ) -> Poll<Option<<Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE> as Stream>::Item>>
None if the stream is exhausted. Read moreimpl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Unpin for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
Auto Trait Implementations§
impl<T, Codec = Json, const BUFFER: usize = remoc::::rch::mpsc::receiver::Receiver::{constant#0}, const MAX_ITEM_SIZE: usize = remoc::::rch::mpsc::receiver::Receiver::{constant#1}> !Freeze for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
impl<T, Codec = Json, const BUFFER: usize = remoc::::rch::mpsc::receiver::Receiver::{constant#0}, const MAX_ITEM_SIZE: usize = remoc::::rch::mpsc::receiver::Receiver::{constant#1}> !RefUnwindSafe for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Send for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
impl<T, Codec, const BUFFER: usize, const MAX_ITEM_SIZE: usize> Sync for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
impl<T, Codec = Json, const BUFFER: usize = remoc::::rch::mpsc::receiver::Receiver::{constant#0}, const MAX_ITEM_SIZE: usize = remoc::::rch::mpsc::receiver::Receiver::{constant#1}> !UnwindSafe for Receiver<T, Codec, BUFFER, MAX_ITEM_SIZE>
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> StreamExt for T
impl<T> StreamExt for T
Source§fn next(&mut self) -> Next<'_, Self>where
Self: Unpin,
fn next(&mut self) -> Next<'_, Self>where
Self: Unpin,
Source§fn into_future(self) -> StreamFuture<Self>
fn into_future(self) -> StreamFuture<Self>
Source§fn map<T, F>(self, f: F) -> Map<Self, F>
fn map<T, F>(self, f: F) -> Map<Self, F>
Source§fn enumerate(self) -> Enumerate<Self>where
Self: Sized,
fn enumerate(self) -> Enumerate<Self>where
Self: Sized,
Source§fn filter<Fut, F>(self, f: F) -> Filter<Self, Fut, F>
fn filter<Fut, F>(self, f: F) -> Filter<Self, Fut, F>
Source§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>
Source§fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
Source§fn collect<C>(self) -> Collect<Self, C>
fn collect<C>(self) -> Collect<Self, C>
Source§fn unzip<A, B, FromA, FromB>(self) -> Unzip<Self, FromA, FromB>
fn unzip<A, B, FromA, FromB>(self) -> Unzip<Self, FromA, FromB>
Source§fn concat(self) -> Concat<Self>
fn concat(self) -> Concat<Self>
Source§fn count(self) -> Count<Self>where
Self: Sized,
fn count(self) -> Count<Self>where
Self: Sized,
Source§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>
Source§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 moreSource§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 moreSource§fn flatten(self) -> Flatten<Self>
fn flatten(self) -> Flatten<Self>
Source§fn flatten_unordered(
self,
limit: impl Into<Option<usize>>,
) -> FlattenUnorderedWithFlowController<Self, ()>
fn flatten_unordered( self, limit: impl Into<Option<usize>>, ) -> FlattenUnorderedWithFlowController<Self, ()>
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§fn take_until<Fut>(self, fut: Fut) -> TakeUntil<Self, Fut>
fn take_until<Fut>(self, fut: Fut) -> TakeUntil<Self, Fut>
Source§fn for_each<Fut, F>(self, f: F) -> ForEach<Self, Fut, F>
fn for_each<Fut, F>(self, f: F) -> ForEach<Self, Fut, F>
Source§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>
Source§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 moreSource§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 moreSource§fn catch_unwind(self) -> CatchUnwind<Self>where
Self: Sized + UnwindSafe,
fn catch_unwind(self) -> CatchUnwind<Self>where
Self: Sized + UnwindSafe,
Source§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>>
Source§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,
Source§fn buffered(self, n: usize) -> Buffered<Self>
fn buffered(self, n: usize) -> Buffered<Self>
Source§fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>
fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>
Source§fn zip<St>(self, other: St) -> Zip<Self, St>
fn zip<St>(self, other: St) -> Zip<Self, St>
Source§fn peekable(self) -> Peekable<Self>where
Self: Sized,
fn peekable(self) -> Peekable<Self>where
Self: Sized,
peek method. Read moreSource§fn chunks(self, capacity: usize) -> Chunks<Self>where
Self: Sized,
fn chunks(self, capacity: usize) -> Chunks<Self>where
Self: Sized,
Source§fn ready_chunks(self, capacity: usize) -> ReadyChunks<Self>where
Self: Sized,
fn ready_chunks(self, capacity: usize) -> ReadyChunks<Self>where
Self: Sized,
Source§fn forward<S>(self, sink: S) -> Forward<Self, S>
fn forward<S>(self, sink: S) -> Forward<Self, S>
Source§fn split<Item>(self) -> (SplitSink<Self, Item>, SplitStream<Self>)
fn split<Item>(self) -> (SplitSink<Self, Item>, SplitStream<Self>)
Source§fn inspect<F>(self, f: F) -> Inspect<Self, F>
fn inspect<F>(self, f: F) -> Inspect<Self, F>
Source§fn left_stream<B>(self) -> Either<Self, B>
fn left_stream<B>(self) -> Either<Self, B>
Source§fn right_stream<B>(self) -> Either<B, Self>
fn right_stream<B>(self) -> Either<B, Self>
Source§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.Source§fn select_next_some(&mut self) -> SelectNextSome<'_, Self>where
Self: Unpin + FusedStream,
fn select_next_some(&mut self) -> SelectNextSome<'_, Self>where
Self: Unpin + FusedStream,
Source§impl<S> TryStreamExt for S
impl<S> TryStreamExt for S
Source§fn err_into<E>(self) -> ErrInto<Self, E>
fn err_into<E>(self) -> ErrInto<Self, E>
Source§fn map_ok<T, F>(self, f: F) -> MapOk<Self, F>
fn map_ok<T, F>(self, f: F) -> MapOk<Self, F>
Source§fn map_err<E, F>(self, f: F) -> MapErr<Self, F>
fn map_err<E, F>(self, f: F) -> MapErr<Self, F>
Source§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 moreSource§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 moreSource§fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>
fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>
Source§fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
fn inspect_err<F>(self, f: F) -> InspectErr<Self, F>
Source§fn into_stream(self) -> IntoStream<Self>where
Self: Sized,
fn into_stream(self) -> IntoStream<Self>where
Self: Sized,
Source§fn try_next(&mut self) -> TryNext<'_, Self>where
Self: Unpin,
fn try_next(&mut self) -> TryNext<'_, Self>where
Self: Unpin,
Source§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>
Source§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 moreSource§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 moreSource§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>
Source§fn try_collect<C>(self) -> TryCollect<Self, C>
fn try_collect<C>(self) -> TryCollect<Self, C>
Source§fn try_chunks(self, capacity: usize) -> TryChunks<Self>where
Self: Sized,
fn try_chunks(self, capacity: usize) -> TryChunks<Self>where
Self: Sized,
Source§fn try_ready_chunks(self, capacity: usize) -> TryReadyChunks<Self>where
Self: Sized,
fn try_ready_chunks(self, capacity: usize) -> TryReadyChunks<Self>where
Self: Sized,
Source§fn try_filter<Fut, F>(self, f: F) -> TryFilter<Self, Fut, F>
fn try_filter<Fut, F>(self, f: F) -> TryFilter<Self, Fut, F>
Source§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>
Source§fn try_flatten_unordered(
self,
limit: impl Into<Option<usize>>,
) -> TryFlattenUnordered<Self>
fn try_flatten_unordered( self, limit: impl Into<Option<usize>>, ) -> TryFlattenUnordered<Self>
Source§fn try_flatten(self) -> TryFlatten<Self>
fn try_flatten(self) -> TryFlatten<Self>
Source§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>
Source§fn try_concat(self) -> TryConcat<Self>
fn try_concat(self) -> TryConcat<Self>
Source§fn try_buffer_unordered(self, n: usize) -> TryBufferUnordered<Self>
fn try_buffer_unordered(self, n: usize) -> TryBufferUnordered<Self>
Source§fn try_buffered(self, n: usize) -> TryBuffered<Self>
fn try_buffered(self, n: usize) -> TryBuffered<Self>
Source§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.Source§fn into_async_read(self) -> IntoAsyncRead<Self>
fn into_async_read(self) -> IntoAsyncRead<Self>
AsyncBufRead. Read moreSource§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