The tokio ecosystem is an implementation of a network stack in Rust. It has all the major functionality of the standard library, the major difference being that it is non-blocking (most common calls do not block the current thread). This is achieved by using mio to do all the low-level heavy lifting, and using futures to abstract away long-running operations. The ecosystem has two basic crates, everything else being built around those:
- tokio-proto provides primitives for building asynchronous servers and clients. This depends heavily on mio for low-level networking and on futures for abstraction.
- tokio-core provides an event loop to run futures in and a number of related APIs. This is useful when an application needs fine-grained control over IO.
As we mentioned in the last section, one way to run futures is on an event loop. An event loop (called a reactor...