Expand description
§async-promise
A simple promise implementation that allows for a single producer to resolve a value to multiple consumers.
Similar to a oneshot channel, but allows for multiple consumers to wait for the value to be resolved, which will be
provided as a reference (&T
).
Similar to an async OnceCell
, but consumers may only await the value, and may not attempt to set it.
Use channel()
to create a new promise and resolver pair.
§Usage
Add the following to your Cargo.toml
:
[dependencies]
async-promise = "..."
Basic usage:
#[tokio::main]
async fn main() {
let (resolve, promise) = async_promise::channel::<i32>();
// Resolve the promise.
resolve.into_resolve(42);
// Read the value.
// May be read by multiple consumers.
let value = promise.wait().await;
assert_eq!(Some(&42), value);
}
Structs§
- Promise
- A container for a value of type
T
that may not yet be resolved. - Resolve
- The resolve/send half of a promise. Created via
channel
, and used to resolve the correspondingPromise
with a value.
Enums§
- Promise
Error - An error that may occur when trying to get the value from a
Promise
, seePromise::try_get
.
Functions§
- channel
- Creates a new promise and resolver pair.