A Future is a struct with one method. That is the whole abstraction:
trait Future {
type Output;
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>;
}
poll is a question: "are you done?" The answer is Poll::Ready(value) or Poll::Pending.
There is no thread here, no scheduler, no magic. A future is a state machine that someone else has to call repeatedly.
