🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ### 实现struct HelloWorld 让我们为 "hello world" future 实现它: ``` extern crate futures; use futures::{Future, Async, Poll}; use std::fmt; struct HelloWorld; impl Future for HelloWorld { type Item = String; type Error = (); fn poll(&mut self) ->Poll<Self::Item, Self::Error> { Ok(Async::Ready("hello world".to_string())) } } ``` ### 实现struct Display 让我们把 future 打印到标准输出(stdout)中. 我们将通过一个`Display`future 来实现这个效果。 ``` struct Display<T>(T); impl<T> Future for Display<T> where T: Future, T::Item : fmt::Display { type Item = (); type Error = T::Error; fn poll(&mut self) -> Poll<(), T::Error> { let value = try_ready!(self.0.poll()); println!("{}", value); Ok(Async::Ready(())) } } ``` 调用 ``` fn main() { let future = Display(HelloWorld); tokio::run(future); } ``` ### 疑问 #### where是什么意思 ``` where T: Future, T::Item :fmt::Display 是什么意思? ``` #### poll函数是什么时候调用的。