13个版本
0.2.3 | 2022年1月14日 |
---|---|
0.2.2 | 2021年11月21日 |
0.2.0 | 2021年10月29日 |
0.1.1 | 2021年10月4日 |
0.0.3 | 2021年8月13日 |
#14 in #窗口事件
每月下载 35次
86KB
2.5K SLoC
awita
Windows的异步窗口库
概述
"awita" 是一个Windows异步窗口创建和管理库。可以使用接收器异步接收窗口事件。
示例
等待事件循环
#[tokio::main]
async main() {
let window = awita::Window::builder()
.title("awita hello")
.build()
.await
.unwrap();
let mut closed = window.closed_receiver().await;
loop {
tokio::select! {
Ok(_) = closed.recv() => println!("closed"),
_ = awita::UiThread::join() => break,
}
}
awita::UiThread::maybe_unwind().await;
}
非等待事件循环
#[tokio::main]
async fn main() {
let window = awita::Window::builder()
.title("await non_waiting")
.build()
.await
.unwrap();
let mut resized = window.resized_receiver().await;
let mut closed = window.closed_receiver().await;
tokio::spawn(async move {
loop {
tokio::select! {
Ok(_) = closed.recv() => println!("closed"),
_ = awita::UiThread::join() => break,
}
}
});
tokio::task::spawn_blocking(move || {
while awita::UiThread::is_running() {
// 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;
}
许可证
版权所有 (c) 2021 LNSEAB
依赖项
~134MB
~2M SLoC