1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use crate::*;
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] #[repr(transparent)] pub struct ErrorHResultOrCode(pub(crate) u32);
impl ErrorHResultOrCode {
pub const fn to_u32(self) -> u32 { self.0 }
pub const fn to_code(self) -> Option<ErrorCode> { if self.0 <= 0xFFFF { Some(ErrorCode(self.0 as _)) } else { None } }
pub const fn to_hresult(self) -> Option<HResultError> { if 0x8000_0000 <= self.0 { Some(HResultError(self.0)) } else { None } }
}
impl From<ErrorHResultOrCode> for u32 { fn from(v: ErrorHResultOrCode) -> Self { v.0 } }
impl From<u32 > for ErrorHResultOrCode { fn from(v: u32 ) -> Self { Self(v) } }
impl From<ErrorCode > for ErrorHResultOrCode { fn from(v: ErrorCode ) -> Self { Self(v.0.into()) } }
impl From<HResultError > for ErrorHResultOrCode { fn from(v: HResultError ) -> Self { Self(v.0) } }