extern crate futures; | |
use std::sync::mpsc::channel; | |
use futures::future::ok; | |
use futures::prelude::*; | |
#[test] | |
fn lots() { | |
fn doit(n: usize) -> Box<Future<Item=(), Error=()> + Send> { | |
if n == 0 { | |
Box::new(ok(())) | |
} else { | |
Box::new(ok(n - 1).and_then(doit)) | |
} | |
} | |
let (tx, rx) = channel(); | |
::std::thread::spawn(|| { | |
doit(1_000).map(move |_| tx.send(()).unwrap()).wait() | |
}); | |
rx.recv().unwrap(); | |
} |