wrapper.rs

 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}