Task
Internally
Runtimes use Tasks internally to manage Futures. A Task is an object which contains a Future and “everything else” needed to manage the Future.
Externally
While “Task” is internal to a runtime, knowing that it exists can help us understand the runtimes better, and thus use them well.
Like a Future, a Task is also procedural. To have Futures polled in a “multi-threaded” way, they must be spawned (see smol::spawn or tokio::task::spawn).