1/6

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.