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