#future #unstable #explicitly #resolve #clicker #controlled-future #manual-future

future-clicker

在不使用 futures 不稳定特性的基础上,重新实现了 manual_future。

2 个版本

0.1.1 2022 年 9 月 26 日
0.1.0 2022 年 9 月 26 日

#1016 in 异步

每月 <36 次下载

MIT 许可证

11KB
161 代码行

可完成

一个 Future 值,一旦显式完成,就会解析,可能来自不同的线程或任务,类似于 Java 的 CompletableFuture

目前,此功能使用 Mutexparking_lot crate 实现。

示例

创建一个不完整的 ControlledFuture 并使用 completer 显式完成它

let (future, completer) = ControlledFuture::<i32>::new();
completer.complete(5).unwrap();
assert_eq!(block_on(future), Ok(5));

创建一个初始状态为完成的 ControlledFuture,可以立即解析

assert_eq!(block_on(ControlledFuture::new_completed(10)), Ok(10));

lib.rs:

一个 Future 值,一旦显式完成,就会解析,可能来自不同的线程或任务,类似于 Java 的 CompletableFuture

目前,此功能使用 Mutexparking_lot crate 实现。

示例

创建一个不完整的 ControlledFuture 并使用 completer 显式完成它

let (future, completer) = ControlledFuture::<i32>::new();
completer.complete(5).unwrap();
assert_eq!(block_on(future), Ok(5));

创建一个初始状态为完成的 ControlledFuture,可以立即解析

assert_eq!(block_on(ControlledFuture::new_completed(10)), Ok(10));

依赖项

~1–6.5MB
~36K SLoC