//! 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<u64>) { | |
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); | |
} | |
} |