twi*_*sel 5 future rust rust-tokio
我正在尝试将 future 附加到BufferUnordered. 目前,我将它们直接推入底层流,Fuse流BufferUnordered是空的,因此推入它没有效果,并且下面的循环不会收到第三个响应。next更改(1)的定义stream.buffer_unordered(1)似乎可以使其工作,因为底层流不是空的/已完成的。
extern crate url;
extern crate futures;
extern crate tokio_core;
extern crate reqwest;
use url::Url;
use futures::*;
use tokio_core::reactor::Core;
use reqwest::unstable::async::{Client, Response, Decoder};
fn main() {
let mut core = Core::new().unwrap();
let client = Client::new(&core.handle()).unwrap();
let hyper = client.get("https://hyper.rs").unwrap().send();
let google = client.get("https://google.com").unwrap().send();
let stream = stream::futures_unordered(vec![future::ok(hyper), future::ok(google)]);
let mut next = stream.buffer_unordered(5).into_future(); // (1)
loop {
match core.run(next) {
Ok((None, _something)) => {
println!("finished");
break;
},
Ok((Some(response), mut next_requests)) => {
{
let inner = next_requests.get_mut();
println!("{}", inner.is_empty());
println!("{}", response.status());
let yahoo = client.get("https://yahoo.com").unwrap().send();
inner.push(future::ok(yahoo)); // no effect here
}
next = next_requests.into_future();
}
Err((error, next_requests)) => {
next = next_requests.into_future();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何添加更多期货BufferUnordered?我真的必须将其链接起来或按照这些思路做一些事情吗?
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |