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
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
中找到。