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§
Sourcefn duplicate_handle(&self, rights: Rights) -> Result<Self, Status>
fn duplicate_handle(&self, rights: Rights) -> Result<Self, Status>
Duplicate a handle, possibly reducing the rights available. Wraps the zx_handle_duplicate syscall.
Sourcefn replace_handle(self, rights: Rights) -> Result<Self, Status>
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.
Sourcefn into_handle(self) -> Handle
fn into_handle(self) -> Handle
Converts the value into its inner handle.
This is a convenience function which simply forwards to the Into
trait.
Sourcefn into_raw(self) -> zx_handle_t
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.
Sourcefn from_handle(handle: Handle) -> Self
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.
Sourcefn into_handle_based<H: HandleBased>(self) -> H
fn into_handle_based<H: HandleBased>(self) -> H
Creates an instance of another handle-based type from this value’s inner handle.
Sourcefn from_handle_based<H: HandleBased>(h: H) -> Self
fn from_handle_based<H: HandleBased>(h: H) -> Self
Creates an instance of this type from the inner handle of another handle-based type.
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.