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