witas 0.11.2

An asynchronous window library in Rust for Windows
Documentation
#[tokio::main]
async fn main() {
    let mut rx = witas::EventReceiver::new();
    let mut raw_input_rx = witas::RawInputEventRecevier::new();
    let _window = witas::Window::builder()
        .title("witas raw_input")
        .inner_size(witas::LogicalSize::new(640, 480))
        .set_receiver(&rx)
        .set_raw_input_receiver(&raw_input_rx)
        .await
        .unwrap();
    let th = tokio::spawn(async move {
        let device_list = witas::raw_input::get_device_list().unwrap();
        for device in &device_list {
            println!("{}", device.name());
            println!("{:?}", device.get_info());
        }
        loop {
            let (event, _) = raw_input_rx.recv().await;
            match event {
                witas::raw_input::RawInputEvent::Input(input) => {
                    println!("{:?}", input);
                }
                witas::raw_input::RawInputEvent::DeviceChange(dc) => {
                    println!("{:?}", dc);
                }
                witas::raw_input::RawInputEvent::Closed => break,
            }
        }
    });
    loop {
        let (event, _) = rx.recv().await;
        println!("{:?}", event);
        if let witas::Event::Closed = event {
            break;
        }
    }
    th.await.unwrap();
}