1 个不稳定版本
0.1.0 | 2024 年 2 月 18 日 |
---|
#100 在 #handle
在 susync 中使用
7KB
97 行
概述
一个用于通过句柄完成 futures 的实用程序包。其主要目的是连接异步 Rust 和基于回调的 API。
灵感来自 future_handles
包。
susync
包在底层使用标准库通道。它使用线程安全原语,但预期争用较低,因此它使用一个 SpinMutex
来管理共享状态。按照设计,句柄可以竞争完成 futures,因此在完成 futures 的句柄上调用 complete
是可以的。
示例
类似通道的 API
async fn func() -> Option<u32> {
let (future, handle) = susync::create();
func_with_callback(|res| {
handle.complete(res);
});
future.await.ok()
}
作用域 API
async fn func() -> Option<u32> {
let future = susync::suspend(|handle| {
func_with_callback(|res| {
handle.complete(res);
});
});
future.await.ok()
}
宏
async fn func() -> Option<u32> {
sus!(func_with_callback(|res| {})).await.ok()
}
文档
完整文档 在此.
依赖关系
~265–710KB
~17K SLoC