26 lines
554 B
Rust
26 lines
554 B
Rust
|
//! 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);
|
||
|
}
|
||
|
}
|