extern crate poolite;
use poolite::Pool;
use std::sync::mpsc::{channel, Sender};
fn main() {
let pool = Pool::new().unwrap();
let (mp, sc) = channel();
for i in 0..38 {
let mp = mp.clone();
pool.push(move || test(i, mp));
}
pool.join(); println!("{:?}", pool);
while let Ok((k, v)) = sc.try_recv() {
println!("key: {}\tvalue: {}", k, v);
}
}
fn test(msg: i32, mp: Sender<(i32, i32)>) {
let res = fib(msg);
mp.send((msg, res)).unwrap();
}
fn fib(msg: i32) -> i32 {
match msg {
0...2 => 1,
x => fib(x - 1) + fib(x - 2),
}
}