2 releases
0.1.1 | Nov 27, 2019 |
---|---|
0.1.0 | Nov 23, 2019 |
#1171 in Asynchronous
47,825 downloads per month
Used in 26 crates
(5 directly)
8KB
106 lines
manual_future
Explicitly completed Future
type for Rust, similar to Java's CompletableFuture
Example
// create a new, incomplete ManualFuture
let (future, completer) = ManualFuture::new();
// complete the future with a value
completer.complete(5).await;
// retrieve the value from the future
assert_eq!(future.await, 5);
// you can also create ManualFuture instances that are already completed
assert_eq!(ManualFuture::new_completed(10).await, 10);
lib.rs
:
A Future
value that resolves once it's explicitly completed, potentially
from a different thread or task, similar to Java's CompletableFuture
.
Currently, this is implemented using the BiLock
from the futures
crate.
Examples
Create an incomplete ManualFuture
and explicitly complete it with the
completer:
let (future, completer) = ManualFuture::<i32>::new();
block_on(async { completer.complete(5).await });
assert_eq!(block_on(future), 5);
Create an initially complete ManualFuture
that can be immediately
resolved:
assert_eq!(block_on(ManualFuture::new_completed(10)), 10);
Dependencies
~1MB
~15K SLoC