#[repr(transparent)]pub struct HandleOrNull(_);Available on Windows only.
Expand description
返回值或输出参数句柄的 FFI 类型,其中 NULL 用作指示错误的哨兵值,例如在 CreateThread 的返回值中。
这使用 repr(transparent) 并具有主机句柄的表示,因此它可以用于此类 FFI 声明。
您可以对 HandleOrNull 做的唯一有用的事情是使用其 TryFrom 实现将其转换成一个 OwnedHandle; 此转换负责检查 NULL。
这可确保此类 FFI 调用在未先检查 NULL 的情况下无法开始使用句柄。
此类型可以保存 OwnedHandle 可能保存的任何句柄值。
与 OwnedHandle 一样,当它包含 -1 时,该值被解释为有效的句柄值,例如 the current process handle,而不是 INVALID_HANDLE_VALUE。
如果它持有一个非空句柄,它将在丢弃时关闭句柄。
Implementations§
source§impl HandleOrNull
impl HandleOrNull
sourcepub unsafe fn from_raw_handle(handle: RawHandle) -> Self
pub unsafe fn from_raw_handle(handle: RawHandle) -> Self
根据从 Windows API 返回的给定 RawHandle 构造一个新的 Self 实例,该 API 使用 null 表示失败,例如 CreateThread。
对于使用 INVALID_HANDLE_VALUE 指示失败的 API,使用 HandleOrInvalid 而不是 HandleOrNull。
Safety
传递的 handle 值必须满足 FromRawHandle::from_raw_handle 的安全要求,或者为空。
请注意,并非所有 Windows API 都使用 null 表示错误; 有关完整故事,请参见 这个。
Trait Implementations§
source§impl Debug for HandleOrNull
impl Debug for HandleOrNull
source§impl TryFrom<HandleOrNull> for OwnedHandle
impl TryFrom<HandleOrNull> for OwnedHandle
§type Error = NullHandleError
type Error = NullHandleError
发生转换错误时返回的类型。
source§fn try_from(handle_or_null: HandleOrNull) -> Result<Self, NullHandleError>
fn try_from(handle_or_null: HandleOrNull) -> Result<Self, NullHandleError>
执行转换。