Crate async_slot [] [src]

The crate provides an unbounded channel that only stores last value sent.

There are two implementations a one is traditionally called sync in the futures world. It works across threads. And the unsync one, which only works in single thread, but is potentially more performant.

The sync one which should be used by default is also reexported at the root of this crate.

Features

  1. Compacts memory (only last value is kept)
  2. Has poll_cancel and is_canceled
  3. Single-producer/single-consumer
  4. Never has backpressure (because value is just replaced)
  5. Replaced value can be recovered if using swap method.
  6. Sync, so if multi-producer is desired, Sender can be wrapped into an Arc/Rc and swap method is used to update value.

Example

let (tx, rx) = async_slot::channel::<i32>();

tx.send_all(iter_ok(vec![1, 2, 3])).wait();

let received = rx.collect().wait().unwrap();
assert_eq!(received, vec![3]);

Reexports

pub use sync::channel;
pub use sync::Receiver;
pub use sync::Sender;

Modules

sync

A thread-safe variant of an unbounded channel that only stores last value sent

unsync

A single-thread variant of an unbounded channel that only stores last value sent

Structs

SendError

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