2次发布
0.1.1 | 2019年11月27日 |
---|---|
0.1.0 | 2019年11月23日 |
#1063 在 异步
132,590 每月下载量
用于 26 个crates (5 直接)
8KB
106 行
manual_future
显式完成的Rust Future
类型,类似于Java的 CompletableFuture
示例
// 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
:
一个Future
值,在显式完成后会解析,可能来自不同的线程或任务,类似于Java的CompletableFuture
。
目前,这是使用来自futures
crate的BiLock
实现的。
示例
创建一个不完整的ManualFuture
,并使用完成器显式完成它
let (future, completer) = ManualFuture::<i32>::new();
block_on(async { completer.complete(5).await });
assert_eq!(block_on(future), 5);
创建一个最初就完成的ManualFuture
,可以立即解析
assert_eq!(block_on(ManualFuture::new_completed(10)), 10);
依赖项
~1MB
~16K SLoC