Future represents a workload that has yet to be doneFutures (at least not remotely as ubiquitous as Rust)tokio::spawn(my_future)) begins (and ONLY begins) the execution of such a workload, and returns a Task that represents the executionTask is analog to immediately spawning the future returned by an async Rust functionTask calling await on another Task is analog (but NOT equivalent) to a Thread calling .Join() on another Thread (except that the join handle of a C# Thread cannot convey a result, so the analogy fails for Task<T>).ConfigureAwait(false) in C# is analog to using a multi-threaded runtime in Rust, and indicates that the workload may be executed not only concurrently, but also in parallel. This distinction is mostly relevant for context dependent workloads (e.g. some platforms restrict UI manipulation to the main thread), but also affects whether or not data races can occurTask object, and rethrown on awaitasync void method is like calling an async Task and discarding the returned Task object, except that exceptions aren't catched, and can instead kill the entire thread