1
0
Fork 0

Assert at compile-time that WindowHandle is Sync

This commit is contained in:
Joakim Frostegård 2020-11-29 15:41:10 +01:00
parent b79a7fbcf5
commit 1ea32123ed
2 changed files with 31 additions and 1 deletions

View file

@ -17,6 +17,7 @@ license = "MIT OR Apache-2.0"
log = "0.4.11"
keyboard-types = { version = "0.5.0", default-features = false }
raw-window-handle = "0.3.3"
static_assertions = "1.1.0"
[target.'cfg(target_os="linux")'.dependencies]
xcb = { version = "0.9", features = ["thread", "xlib_xcb", "dri2"] }

View file

@ -58,3 +58,32 @@ unsafe impl <'a>HasRawWindowHandle for Window<'a> {
self.0.raw_window_handle()
}
}
// Compile-time API assertions
#[doc(hidden)]
mod assertions {
use crate::{WindowHandle, WindowHandler, Event, Window};
struct TestWindowHandler {
#[allow(dead_code)]
ptr: *mut ::std::ffi::c_void,
}
impl WindowHandler for TestWindowHandler {
type Message = ();
fn on_event(&mut self, _: &mut Window, _: Event) {
}
fn on_message(&mut self, _: &mut Window, _: Self::Message) {
}
fn on_frame(&mut self) {
}
}
static_assertions::assert_not_impl_any!(TestWindowHandler: Send);
static_assertions::assert_impl_all!(WindowHandle<TestWindowHandler>: Send);
}