4 个版本
0.2.0 | 2024 年 2 月 18 日 |
---|---|
0.1.2 | 2023 年 12 月 28 日 |
0.1.1 | 2023 年 12 月 26 日 |
0.1.0 | 2023 年 12 月 26 日 |
#549 in 异步
每月 167 次下载
21KB
289 行
概述
一个利用句柄完成 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()
}
文档
完整文档 在这里。
依赖关系
~0.4–0.9MB
~19K SLoC