windows-erg 0.1.0

Ergonomic, idiomatic Rust wrappers for Windows APIs
Documentation
use std::thread;
use std::time::Duration;

use windows_erg::Wait;

fn main() -> windows_erg::Result<()> {
    let wait_a = Wait::manual_reset(false)?;
    let wait_b = Wait::manual_reset(false)?;

    let signal_b = wait_b.try_clone()?;
    thread::spawn(move || {
        thread::sleep(Duration::from_millis(250));
        let _ = signal_b.set();
    });

    let signaled_index = Wait::wait_any(&[&wait_a, &wait_b])?;
    println!("wait_any signaled index: {}", signaled_index);

    wait_a.set()?;
    let all_signaled = Wait::wait_all_timeout(&[&wait_a, &wait_b], Duration::from_secs(1))?;
    println!("wait_all_timeout result: {}", all_signaled);

    Ok(())
}