#future #async-await #complete #await #async #completablefuture

manual_future

必须手动完成的future,类似于Java的CompletableFuture

2次发布

0.1.1 2019年11月27日
0.1.0 2019年11月23日

#1063异步

Download history 32386/week @ 2024-03-14 27788/week @ 2024-03-21 27762/week @ 2024-03-28 18406/week @ 2024-04-04 27120/week @ 2024-04-11 19554/week @ 2024-04-18 25097/week @ 2024-04-25 14968/week @ 2024-05-02 18591/week @ 2024-05-09 16369/week @ 2024-05-16 32532/week @ 2024-05-23 36471/week @ 2024-05-30 45331/week @ 2024-06-06 27937/week @ 2024-06-13 35980/week @ 2024-06-20 18420/week @ 2024-06-27

132,590 每月下载量
用于 26 个crates (5 直接)

MIT 许可证

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

目前,这是使用来自futurescrate的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