#![doc = include_str!("../readme.md")]
#![debugger_visualizer(natvis_file = "../windows-result.natvis")]
#![cfg_attr(all(not(feature = "std"), not(test)), no_std)]
#![cfg_attr(not(windows), expect(unused_imports))]
#![expect(
non_upper_case_globals,
non_snake_case,
non_camel_case_types,
clippy::upper_case_acronyms
)]
extern crate alloc;
use alloc::{string::String, vec::Vec};
#[expect(
dead_code,
reason = "IErrorInfo's generated IID accompanies the vtable but is not needed"
)]
mod bindings;
use bindings::*;
#[cfg(all(windows, not(windows_slim_errors)))]
mod com;
#[cfg(windows)]
mod strings;
#[cfg(windows)]
use strings::*;
#[cfg(all(windows, not(windows_slim_errors)))]
mod bstr;
mod error;
pub use error::*;
mod hresult;
pub use hresult::HRESULT;
mod bool;
pub use bool::BOOL;
mod win32_error;
pub use win32_error::WIN32_ERROR;
mod ntstatus;
pub use ntstatus::NTSTATUS;
mod rpc_status;
pub use rpc_status::RPC_STATUS;
pub type Result<T> = core::result::Result<T, Error>;