future是一个trait。它是异步运行时的基础抽象。

  1. trait Future {
  2. type Output;
  3. fn poll(
  4. self: Pin<&mut Self>,
  5. cx: &mut Context<'_>,
  6. ) -> Poll<Self::Output>;
  7. }

该trait需要实现一个如上的函数。我们需要了解的就是这个函数的参数。

  • Pin 智能指针
  • cx Context

context是我们常见的一个概念。上下文。
我们首先来看下整个异步运行时的概念。了解异步运行时的常见概念。

  • waker
  • executor

    executor

    执行器会不断的执行waker。

    waker

    future中已经被标记为完成状态,等待执行。

    task

    waker的集合。