//! An asynchronous fibonacci sequence generator.
externcrate crossbeam_channel;usestd::thread;usecrossbeam_channel::{bounded, Sender};// Sends the Fibonacci sequence into the channel until it becomes disconnected.
fnfibonacci(sender:Sender<u64>){let(mut x,mut y)=(0,1);while sender.send(x).is_ok(){let tmp = x;
x = y;
y = tmp + y;}}fnmain(){let(s, r)=bounded(0);thread::spawn(||fibonacci(s));// Print the first 20 Fibonacci numbers.
for num in r.iter().take(20){println!("{}", num);}}