pub fn broadcast<T>(cap: usize) -> (Sender<T>, Receiver<T>)
Expand description

Create a new broadcast channel.

The created channel has space to hold at most cap messages at a time.

Panics

Capacity must be a positive number. If cap is zero, this function will panic.

Examples

use async_broadcast::{broadcast, TryRecvError, TrySendError};

let (s, mut r1) = broadcast(1);
let mut r2 = r1.clone();

assert_eq!(s.broadcast(10).await, Ok(None));
assert_eq!(s.try_broadcast(20), Err(TrySendError::Full(20)));

assert_eq!(r1.recv().await, Ok(10));
assert_eq!(r2.recv().await, Ok(10));
assert_eq!(r1.try_recv(), Err(TryRecvError::Empty));
assert_eq!(r2.try_recv(), Err(TryRecvError::Empty));