An asynchronous window library for Windows
"awita" is an asynchronous window creation and management library for Windows. A window event can be received asynchronously using a receiver.
```rust
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; } ```
```rust
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;
} ```
Copyright (c) 2021 LNSEAB