Expand description
Composable primitives for asynchronous computations
The async module contains utilities for managing asynchronous computations.
These utilities are primarily based around Future and Stream types as
well as functions that allow composing computations on these types.
§Future
A Future is a proxy representing the result of a computation which may
not be complete. The computation may be running concurrently in another
thread or may be triggered upon completion of an asynchronous callback. One
way to think of a Future is as a Result where the value is
asynchronously computed.
For example:
use eventual::*;
// Run a computation in another thread
let future1 = Future::spawn(|| {
// Represents an expensive computation, but for now just return a
// number
42
});
// Run another computation
let future2 = Future::spawn(|| {
// Another expensive computation
18
});
let res = join((
future1.map(|v| v * 2),
future2.map(|v| v + 5)))
.and_then(|(v1, v2)| Ok(v1 - v2))
.await().unwrap();
assert_eq!(61, res);
§Stream
A Stream is like a Future, except that instead of representing a single
value, it represents a sequence of values.
Structs§
- Busy
Sender - Complete
- An object that is used to fulfill or reject an associated Future.
- Future
- Receipt
- Sender
- The sending half of
Stream::pair(). Can only be owned by a single task at a time. - Stream
- Stream
Iter - Timer
- Provides timeouts as a
Futureand periodic ticks as aStream.
Enums§
Traits§
Functions§
- background
- This method backgrounds a task onto a task runner waiting for complete to be called. Currently we only support using a ThreadPool as the task runner itself.
- defer
- This method defers a task onto a task runner until we can complete that call. Currently we only support using a ThreadPool as the task runner itself.
- join
- select
- sequence
- Returns a
Streamconsisting of the completion of the supplied async values in the order that they are completed.