Skip to content

Latest commit

 

History

History
61 lines (37 loc) · 3.03 KB

Readme.md

File metadata and controls

61 lines (37 loc) · 3.03 KB

🦀 winresult - windows result codes 🦀

Debug-friendly types for windows result codes.

GitHub crates.io docs.rs License

Why?

  • u32 error codes are annoying to dbg!(...). winresult has awesome Debug impls.

  • u32 error codes are annoying to view in your debugger. winresult has awesome *.natvis files. Use natvis-pdbs!

  • typoing ERROR_WHATEVER in a match is a mere warning. ERROR::WHATEVER is a hard error.
    (I'd still use #![deny(unreachable_patterns)] anyways.)

  • ERROR_INVALID_FUNCTION == S_FALSE (== 1.) Lame!

  • ERROR_FILE_NOT_FOUND (2) is a mess. A function or GetLastError might return:

    label value notes
    ERROR_FILE_NOT_FOUND 0x00000002 Not an HRESULT (would be "successful")
    HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) 0x80070002 hresult.info "incorrectly" labels ERROR_* as this
    NTSTATUS_FROM_WIN32(ERROR_FILE_NOT_FOUND) 0xC0070002 IDK how frequently [NtStatus]es get shoved into GetLastError, but I've seen weirder
    D3D10_ERROR_FILE_NOT_FOUND 0x88790002 Different facility, same code
    D3D11_ERROR_FILE_NOT_FOUND 0x887C0002 Different facility, same code
  • ERROR_* is a mixture of HRESULTs and non-HRESULTs. Can you keep them straight? No. No you cannot. Stop lying.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.