Expand description

A multi-producer, single-consumer, futures-aware, FIFO queue with back pressure.

A channel can be used as a communication primitive between tasks running on futures-rs executors. Channel creation provides Receiver and Sender handles. Receiver implements Stream and allows a task to read values out of the channel. If there is no message to read from the channel, the current task will be notified when a new value is sent. Sender implements the Sink trait and allows a task to send messages into the channel. If the channel is at capacity, then send will be rejected and the task will be notified when additional capacity is available.

Disconnection

When all Sender handles have been dropped, it is no longer possible to send values into the channel. This is considered the termination event of the stream. As such, Sender::poll will return Ok(Ready(None)).

If the receiver handle is dropped, then messages can no longer be read out of the channel. In this case, a send will result in an error.

Clean Shutdown

If the Receiver is simply dropped, then it is possible for there to be messages still in the channel that will not be processed. As such, it is usually desirable to perform a “clean” shutdown. To do this, the receiver will first call close, which will prevent any further messages to be sent into the channel. Then, the receiver consumes the channel to completion, at which point the receiver can be dropped.

Structs

Type of future which Executor instances must be able to execute for spawn.

The receiving end of a channel which implements the Stream trait.

Error type for sending, used when the receiving end of a channel is dropped

The transmission end of a channel which is used to send values.

Handle returned from the spawn function.

Error type returned from try_send

The receiving end of a channel which implements the Stream trait.

The transmission end of a channel which is used to send values.

Functions

Creates an in-memory channel implementation of the Stream trait with bounded capacity.

Spawns a stream onto the instance of Executor provided, executor, returning a handle representing the remote stream.

Spawns a stream onto the instance of Executor provided, executor, returning a handle representing the remote stream, with unbounded buffering.

Creates an in-memory channel implementation of the Stream trait with unbounded capacity.