windows_gen 0.24.0

Code gen support for the windows crate
Documentation
use super::*;

pub fn gen_handle() -> TokenStream {
    quote! {
        #[derive(::std::clone::Clone, ::std::marker::Copy, ::std::default::Default, ::std::fmt::Debug, ::std::cmp::PartialEq, ::std::cmp::Eq)]
        #[repr(transparent)]
        pub struct HANDLE(pub isize);
        unsafe impl ::windows::runtime::Handle for HANDLE {
            fn is_invalid(&self) -> bool {
                self.0 == 0 || self.0 == -1
            }

            fn ok(self) -> ::windows::runtime::Result<Self> {
                if self.is_invalid() {
                    Err(::windows::runtime::Error::from_win32())
                } else {
                    Ok(self)
                }
            }
        }
        unsafe impl ::windows::runtime::Abi for HANDLE {
            type Abi = Self;
            type DefaultType = Self;
        }
    }
}