wait_not_await

Crates.iowait_not_await
lib.rswait_not_await
version0.2.1
sourcesrc
created_at2022-03-21 19:58:40.71872
updated_at2022-03-28 09:53:23.844038
descriptionSimple awaiter implementation
homepage
repositoryhttps://github.com/krypt0nn/wait_not_await
max_upload_size
id554286
size8,652
Nikita Podvirnyi (krypt0nn)

documentation

README

🦀 wait_not_await

Simple awaiter implementation in Rust

Examples

Await as a variable

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 with functions

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 result handling

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 loop with result

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());

Author: Nikita Podvirnyy

Licensed under MIT

Commit count: 6

cargo fmt