Abstractions for asynchronous programming.
This crate provides a number of core abstractions for writing asynchronous code:
- [Futures](::Future) (sometimes called promises), which represent a single
asychronous computation that may result in a final value or an error.
- [Streams](::Stream), which represent a series of values or errors produced asynchronously.
- [Sinks](::Sink), which support asynchronous writing of data.
- [Executors](::executor), which are responsible for running asynchronous tasks.
The crate also contains abstractions for [asynchronous I/O](::io) and
[cross-task communication](::channel).
Underlying all of this is the *task system*, which is a form of lightweight
threading. Large asynchronous computations are built up using futures,
streams and sinks, and then spawned as independent tasks that are run to
completion, but *do not block* the thread running them.