awita

awita at crates.io awita at docs.rs

An asynchronous window library for Windows

Overview

"awita" is an asynchronous window creation and management library for Windows. A window event can be received asynchronously using a receiver.

Examples

Waiting event loop

```rust

[tokio::main]

async main() { let window = awita::Window::builder() .title("awita hello") .build() .await .unwrap(); let mut closed = window.closedreceiver().await; loop { tokio::select! { Ok() = closed.recv() => println!("closed"), _ = awita::UiThread::join() => break, } } awita::UiThread::maybe_unwind().await; } ```

Non-waiting event loop

```rust

[tokio::main]

async fn main() { let window = awita::Window::builder() .title("await nonwaiting") .build() .await .unwrap(); let mut resized = window.resizedreceiver().await; let mut closed = window.closedreceiver().await; tokio::spawn(async move { loop { tokio::select! { Ok() = closed.recv() => println!("closed"), _ = awita::UiThread::join() => break, } } }); tokio::task::spawnblocking(move || { while awita::UiThread::isrunning() { // For example, write a rendering code.

        if let Ok(Some(size)) = resized.try_recv() {
            println!("resized: ({}, {})", size.width, size.height);
        }
    }
})
.await?;
awita::UiThread::maybe_unwind().await;

} ```

License

MIT license


Copyright (c) 2021 LNSEAB