[][src]Crate postage

The feature-rich, portable async channel library. Provides a set of async channels that can be used with any async executor.

Why use Postage?

  • Includes a rich set of channels, and it works with any async executor (currently integration tests cover tokio and async-std)
    • mpsc, a multi-producer, single-consumer channel
    • broadcast, a multi-producer, multi-consumer broadcast channel with backpressure (no lagging!)
    • watch, a stateful channel where receivers receive an initial value, and updates when the value state changes.
    • oneshot, a transfer channel that can be used once.
    • barrier, a channel that doesn't carry a value, but transmits when the sender half is dropped.
  • Comes with built-in Stream and Sink combinators.
    • Sinks can be chained, and filtered.
    • Streams can be chained, filtered, mapped, and merged.
    • Sinks and streams can log their values, for easy app debugging.

Postage is in beta quality. The functionality is implemented and has unit/integration test coverage. But it needs to be tested on more hardware, and more operating systems.

Modules

barrier

Barrier channels can be used to synchronize events, but do not transmit any data.
When the sender is dropped (or tx.send(()) is called), the receiver is awoken.
This can be used to asynchronously coordinate actions between tasks.

broadcast

The broadcast channel provides multi-sender, multi-receiver message dispatch. All receivers are sent every message. The channel has a fixed capacity, and senders are suspended if the buffer is filled.

mpsc

A fixed-capacity multi-producer, single-consumer channel.
The producer can be cloned, and the sender task is suspended if the channel becomes full.

oneshot

Oneshot channels transmit a single value between a sender and a reciever.
Neither can be cloned. If the sender drops, the receiver recieves a None value.

watch

Watch channels can be used to asynchronously transmit state between tasks

Structs

RecvFuture

A future returned by Stream::recv.

SendError

An error type returned by Sink::send, if the sink is closed while a send is in progress.

SendFuture

A future returned by Sink::send, which wraps an item. The item is sent to the sink, or returned if the sink is closed.

Enums

PollRecv

An enum of poll responses that are produced by Stream implementations.

PollSend

An enum of poll responses that are produced by Sink implementations.

TryRecvError

An error type returned by Stream::try_recv, when the stream has no messages, or is closed.

TrySendError

An error type returned by Sink::try_send, when the sink is full, or is closed.

Traits

Sink

A sink which can asynchronously accept messages, and at some point may refuse to accept any further messages.

Stream

An asynchronous stream, which produces a series of messages until closed.