#window #windows #async-version

wiard

Windows 在 Rust 中的窗口处理库

14 个版本

0.2.1 2024 年 8 月 19 日
0.1.11 2024 年 8 月 9 日
0.1.9 2024 年 7 月 27 日
0.1.5 2024 年 3 月 4 日
0.1.1 2023 年 11 月 26 日

#254GUI

Download history 105/week @ 2024-04-27 155/week @ 2024-06-01 10/week @ 2024-06-08 176/week @ 2024-06-22 5/week @ 2024-06-29 118/week @ 2024-07-06 5/week @ 2024-07-13 121/week @ 2024-07-27 165/week @ 2024-08-03 42/week @ 2024-08-10

328 每月下载量
用于 pnte

MIT 许可证

125KB
3.5K SLoC

wiard

Windows 在 Rust 中的窗口处理库

简单示例

同步版本

fn main() {
    let mut event_rx = wiard::EventReceiver::new();
    let _window = wiard::Window::builder(&event_rx)
        .build()
        .unwrap();
    loop {
        let Some((event, _)) = event_rx.recv() else {
            break;
        };
        println!("{event:?}");
    }
}

异步版本

#[tokio::main]
async fn main() {
    let mut event_rx = wiard::AsyncEventReceiver::new();
    let _window = wiard::Window::builder(&event_rx)
        .await
        .unwrap();
    loop {
        let Some((event, _)) = event_rx.recv().await else {
            break;
        };
        println!("{event:?}");
    }
}

许可证

本库采用 MIT 许可证


lib.rs:

Windows 在 Rust 中的窗口处理库

简单示例

同步版本

fn main() {
    let mut event_rx = wiard::EventReceiver::new();
    let _window = wiard::Window::builder(&event_rx)
        .build()
        .unwrap();
    loop {
        let Some((event, _)) = event_rx.recv() else {
            break;
        };
        println!("{event:?}");
    }
}

异步版本

#[tokio::main]
async fn main() {
    let mut event_rx = wiard::AsyncEventReceiver::new();
    let _window = wiard::Window::builder(&event_rx)
        .await
        .unwrap();
    loop {
        let Some((event, _)) = event_rx.recv().await else {
            break;
        };
        println!("{event:?}");
    }
}

注意

wiard 使用 WM_APP。不要直接将 WM_APP 发送到 wiard 的 UI 线程。

依赖项

~136MB
~2.5M SLoC