Expand description

Rendezvous channel implementation

Rendezvous channels are equivalent to a channel with a 0-sized buffer: A sender cannot send until there is an active receiver waiting. This implementation uses a Semaphore to record demand and coordinate with the receiver.

Rendezvous channels should be used with care—it’s inherently easy to deadlock unless they’re being used from separate tasks or an a coroutine setup (e.g. crate::future::fn_stream::FnStream)

Structs

  • Receiver half of the rendezvous channel
  • Sender-half of a channel

Functions

  • Create a new rendezvous channel