zx

Trait HandleBased

Source
pub trait HandleBased:
    AsHandleRef
    + From<Handle>
    + Into<Handle> {
    // Provided methods
    fn duplicate_handle(&self, rights: Rights) -> Result<Self, Status> { ... }
    fn replace_handle(self, rights: Rights) -> Result<Self, Status> { ... }
    fn into_handle(self) -> Handle { ... }
    fn into_raw(self) -> zx_handle_t { ... }
    fn from_handle(handle: Handle) -> Self { ... }
    fn into_handle_based<H: HandleBased>(self) -> H { ... }
    fn from_handle_based<H: HandleBased>(h: H) -> Self { ... }
    fn is_invalid_handle(&self) -> bool { ... }
}
Expand description

A trait implemented by all handle-based types.

Note: it is reasonable for user-defined objects wrapping a handle to implement this trait. For example, a specific interface in some protocol might be represented as a newtype of Channel, and implement the as_handle_ref method and the From<Handle> trait to facilitate conversion from and to the interface.

Provided Methods§

Source

fn duplicate_handle(&self, rights: Rights) -> Result<Self, Status>

Duplicate a handle, possibly reducing the rights available. Wraps the zx_handle_duplicate syscall.

Source

fn replace_handle(self, rights: Rights) -> Result<Self, Status>

Create a replacement for a handle, possibly reducing the rights available. This invalidates the original handle. Wraps the zx_handle_replace syscall.

Source

fn into_handle(self) -> Handle

Converts the value into its inner handle.

This is a convenience function which simply forwards to the Into trait.

Source

fn into_raw(self) -> zx_handle_t

Converts the handle into it’s raw representation.

The caller takes ownership over the raw handle, and must close or transfer it to avoid a handle leak.

Source

fn from_handle(handle: Handle) -> Self

Creates an instance of this type from a handle.

This is a convenience function which simply forwards to the From trait.

Source

fn into_handle_based<H: HandleBased>(self) -> H

Creates an instance of another handle-based type from this value’s inner handle.

Source

fn from_handle_based<H: HandleBased>(h: H) -> Self

Creates an instance of this type from the inner handle of another handle-based type.

Source

fn is_invalid_handle(&self) -> bool

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§