12 unstable releases (4 breaking)

0.4.1 Oct 6, 2025
0.3.4 May 19, 2025
0.3.2 Mar 18, 2025
0.2.0 Jul 3, 2024
0.1.0 Feb 22, 2024

#387 in Windows APIs

Download history 2116517/week @ 2025-08-25 2044848/week @ 2025-09-01 2225166/week @ 2025-09-08 2379834/week @ 2025-09-15 2727019/week @ 2025-09-22 2924784/week @ 2025-09-29 2953658/week @ 2025-10-06 2888340/week @ 2025-10-13 2904288/week @ 2025-10-20 3194310/week @ 2025-10-27 3151568/week @ 2025-11-03 3007255/week @ 2025-11-10 3340686/week @ 2025-11-17 2389564/week @ 2025-11-24 2750364/week @ 2025-12-01 3405083/week @ 2025-12-08

12,051,806 downloads per month
Used in 17,125 crates (25 directly)

MIT/Apache

32KB
698 lines

Windows error handling

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.4"

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(())
}

Dependencies