#handle #future #bridge #callback #async

susync-macros

为 susync 库提供的 proc macro 包

1 个不稳定版本

0.1.0 2024 年 2 月 18 日

#100#handle


susync 中使用

MIT 许可证

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