小编Oui*_*uim的帖子

为什么 poll() 中的这个 Delay future 在我的自定义 Stream 类型中不起作用?

我想每秒打印一次“你好”。

引用文档:

期货使用基于投票的模型。未来的消费者反复调用 poll 函数。未来然后试图完成。如果未来能够完成,则返回 Async::Ready(value)。如果未来由于被内部资源(例如 TCP 套接字)阻塞而无法完成,则返回 Async::NotReady。

如果s return is ,我的poll函数返回,但没有任何内容打印到标准输出。NotReadyDelayNotReady

use futures::{Async, Future, Stream}; // 0.1.25
use std::time::{Duration, Instant};
use tokio::timer::Delay; // 0.1.15

struct SomeStream;

impl Stream for SomeStream {
    type Item = String;
    type Error = ();

    fn poll(&mut self) -> Result<Async<Option<Self::Item>>, Self::Error> {
        let when = Instant::now() + Duration::from_millis(1000);
        let mut task = Delay::new(when).map_err(|e| eprintln!("{:?}", e));
        match task.poll() {
            Ok(Async::Ready(value)) => {}
            Ok(Async::NotReady) => return Ok(Async::NotReady),
            Err(err) => return Err(()), …
Run Code Online (Sandbox Code Playgroud)

rust rust-tokio

2
推荐指数
1
解决办法
339
查看次数

标签 统计

rust ×1

rust-tokio ×1