#await #wait #🦀 #loops #awaiter

wait_not_await

简单的 awaiter 实现

3 个不稳定版本

0.2.1 2022 年 3 月 28 日
0.2.0 2022 年 3 月 26 日
0.1.0 2022 年 3 月 21 日

#12 in #🦀


用于 udpsec

MIT 许可证

8KB
115

🦀 wait_not_await

Rust 中的简单 awaiter 实现

示例

将 await 作为变量

use std::time::Duration;
use wait_not_await::Await;

let mut awaiter = Await::new(move || {
    std::thread::sleep(Duration::from_secs(3));

    "Hello, Wolrd!".to_string()
});

if let Some(result) = awaiter.wait(None) {
    println!("Result: {}", result);
}

使用函数的 await

use std::time::Duration;
use wait_not_await::Await;

fn async_hello_world() -> Await<String> {
    Await::new(move || {
        std::thread::sleep(Duration::from_secs(2));

        "Hello, World!".to_string()
    })
}

println!("{}", async_hello_world().wait(None).unwrap());

await 结果处理

use std::time::Duration;
use wait_not_await::Await;

let awaiter = Await::new(move || {
    std::thread::sleep(Duration::from_secs(3));

    "Hello, Wolrd!".to_string()
});

awaiter.then(move |result| {
    println!("Task result: {}", result);
});

带有结果的 await 循环

use std::time::Duration;
use wait_not_await::Await;

fn async_hello_world() -> Await<String> {
    Await::new(move || {
        std::thread::sleep(Duration::from_secs(2));

        "Hello, World!".to_string()
    })
}

let mut awaiter = async_hello_world();
let mut i = 1;

while let None = awaiter.result() {
    println!("Waiting for result: {}", i);

    i += 1;
}

println!("{}", awaiter.result().unwrap());

作者: Nikita Podvirnyy

许可协议: MIT

无运行时依赖