14 个不稳定版本 (3 个重大更改)

0.4.2 2023 年 1 月 5 日
0.4.1 2022 年 12 月 24 日
0.3.1 2022 年 12 月 23 日
0.2.7 2022 年 12 月 22 日
0.1.0 2022 年 12 月 22 日

#419 in 无标准库


用于 2 crate

MIT 许可证

7KB
111

microasync

MicroAsync 是一个专为 Rust 创建的小型异步 "运行时",在我非常烦恼于一个完全异步的库,但我的代码都是同步编写的时候。

用例

假设你这里有一个同步函数,而你想要运行一个异步函数,但是哦,不!它不起作用,因为这个函数是异步的,而你的函数不是!

这就是 microasync::sync 发挥作用的地方。

它同步执行单个异步函数,就像它是正常函数一样返回其结果。为此,创建了一个 小巧 的单线程异步 "运行时",运行这个任务,然后停止。

示例

use microasync::sync;

fn main() {
    //println!("{}", do_sth_async(1000).await);

    println!("{}", sync(do_sth_async(1000)));
}

async fn add_async(a: i32, b: i32) -> i32 {
    a + b
}

async fn do_sth_async(i: i32) -> i32 {
    add_async(i, i * 4).await
}

无 STD?没问题。

此 crate 支持 no_std 环境。为此,启用此 crate 的 no_std 功能。

连接

可以使用 join!() 宏将多个 future 连接起来,这将有效地将许多 future 并行化成一个,然后再次通过 sync() 运行。这使得大多数东西都可以使用 MicroAsync 实现。

可以通过使用 no_joiner 功能标志来禁用此功能。

此功能的演示可以在 examples/join.rs 中找到。

无运行时依赖项

功能