#[repr(transparent)]
pub struct HandleOrNull(_);
🔬 This is a nightly-only experimental API. (io_safety #87074)
This is supported on Windows only.
Expand description

FFI type for handles in return values or out parameters, where NULL is used as a sentry value to indicate errors, such as in the return value of CreateThread. This uses repr(transparent) and has the representation of a host handle, so that it can be used in such FFI declarations.

The only thing you can usefully do with a HandleOrNull is to convert it into an OwnedHandle using its TryFrom implementation; this conversion takes care of the check for NULL. This ensures that such FFI calls cannot start using the handle without checking for NULL first.

This type concerns any value other than NULL to be valid, including INVALID_HANDLE_VALUE. This is because APIs that use NULL as their sentry value don’t treat INVALID_HANDLE_VALUE as special.

If this holds a valid handle, it will close the handle on drop.

Trait Implementations

Formats the value using the given formatter. Read more

Constructs a new instance of Self from the given RawHandle returned from a Windows API that uses null to indicate failure, such as CreateThread.

Use HandleOrInvalid instead of HandleOrNull for APIs that use INVALID_HANDLE_VALUE to indicate failure.

Safety

The resource pointed to by handle must be either open and otherwise unowned, or null. Note that not all Windows APIs use null for errors; see here for the full story.

The type returned in the event of a conversion error.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.