The windows-result crate provides efficient Windows error handling and propagation with support for Win32, COM, and WinRT APIs.
Start by adding the following to your Cargo.toml file:
[dependencies.windows-result] version = "0.1"
Use the HRESULT
, Error
, and specialized Result
types as needed:
use windows_result::*; const S_OK: HRESULT = HRESULT(0); const ERROR_CANCELLED: u32 = 1223; const E_CANCELLED: HRESULT = HRESULT::from_win32(ERROR_CANCELLED); fn main() -> Result<()> { S_OK.ok()?; let e = Error::new(E_CANCELLED, "test message"); assert_eq!(e.code(), E_CANCELLED); assert_eq!(e.message(), "test message"); Ok(()) }