1extern crate poolite;
2use poolite::Pool;
3
4use std::sync::mpsc::{channel, Sender};
5
6fn main() {
8 let pool = Pool::new().unwrap();
9 let (mp, sc) = channel();
10 for i in 0..38 {
11 let mp = mp.clone();
12 pool.push(move || test(i, mp));
13 }
14
15 pool.join(); println!("{:?}", pool);
17
18 while let Ok((k, v)) = sc.try_recv() {
19 println!("key: {}\tvalue: {}", k, v);
20 }
21}
22
23fn test(msg: i32, mp: Sender<(i32, i32)>) {
24 let res = fib(msg);
25 mp.send((msg, res)).unwrap();
26}
27
28fn fib(msg: i32) -> i32 {
29 match msg {
30 0...2 => 1,
31 x => fib(x - 1) + fib(x - 2),
32 }
33}