#future #callback #handle #async #bridge

susync

一个利用句柄完成 futures 的工具库。其主要目的是连接异步 Rust 和基于回调的 API。

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 异步

Download history 1/week @ 2024-03-17 1/week @ 2024-03-24 1/week @ 2024-03-31 105/week @ 2024-06-09 5/week @ 2024-06-16 57/week @ 2024-06-30

每月 167 次下载

MIT 许可证

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