Function crossbeam_channel::bounded [−][src]
pub fn bounded<T>(cap: usize) -> (Sender<T>, Receiver<T>)
Creates a channel of bounded capacity.
This channel has a buffer that can hold at most cap
messages at a time.
A special case is zero-capacity channel, which cannot hold any messages. Instead, send and receive operations must appear at the same time in order to pair up and pass the message over.
Examples
A channel of capacity 1:
use std::thread; use std::time::Duration; use crossbeam_channel::bounded; let (s, r) = bounded(1); // This call returns immediately because there is enough space in the channel. s.send(1).unwrap(); thread::spawn(move || { // This call blocks the current thread because the channel is full. // It will be able to complete only after the first message is received. s.send(2).unwrap(); }); thread::sleep(Duration::from_secs(1)); assert_eq!(r.recv(), Ok(1)); assert_eq!(r.recv(), Ok(2));
A zero-capacity channel:
use std::thread; use std::time::Duration; use crossbeam_channel::bounded; let (s, r) = bounded(0); thread::spawn(move || { // This call blocks the current thread until a receive operation appears // on the other side of the channel. s.send(1).unwrap(); }); thread::sleep(Duration::from_secs(1)); assert_eq!(r.recv(), Ok(1));