[][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.
    • With the logging feature, Sinks and streams can log their values. This is really helpful when debugging applications.

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.

prelude
sink

A sink for values which are asynchronously accepted, until the target is closed.

stream

A stream of values which are asynchronously produced, until the source is closed. Streams be constructed with a connected sender using postage channels:

watch

Watch channels can be used to asynchronously transmit state between tasks

Structs

Context

The Context of an asynchronous task.