1use std::ops::Deref;
2
3use windows::Win32::{Foundation::HWND, UI::WindowsAndMessaging::HCURSOR};
4
5#[derive(Debug, Clone, Copy)]
6pub(crate) struct SafeCursor {
7 raw: HCURSOR,
8}
9
10unsafe impl Send for SafeCursor {}
11unsafe impl Sync for SafeCursor {}
12
13impl From<HCURSOR> for SafeCursor {
14 fn from(value: HCURSOR) -> Self {
15 SafeCursor { raw: value }
16 }
17}
18
19impl Deref for SafeCursor {
20 type Target = HCURSOR;
21
22 fn deref(&self) -> &Self::Target {
23 &self.raw
24 }
25}
26
27#[derive(Debug, Clone, Copy)]
28pub(crate) struct SafeHwnd {
29 raw: HWND,
30}
31
32impl SafeHwnd {
33 pub(crate) fn as_raw(&self) -> HWND {
34 self.raw
35 }
36}
37
38unsafe impl Send for SafeHwnd {}
39unsafe impl Sync for SafeHwnd {}
40
41impl From<HWND> for SafeHwnd {
42 fn from(value: HWND) -> Self {
43 SafeHwnd { raw: value }
44 }
45}
46
47impl Deref for SafeHwnd {
48 type Target = HWND;
49
50 fn deref(&self) -> &Self::Target {
51 &self.raw
52 }
53}