Struct uniffi::Handle

#[repr(transparent)]
pub struct Handle(u64);
Expand description

Object handle

Handles opaque u64 values used to pass objects across the FFI, both for objects implemented in Rust and ones implemented in the foreign language.

Rust handles are generated by leaking a raw pointer Foreign handles are generated with a handle map that only generates odd values. For all currently supported architectures and hopefully any ones we add in the future:

  • 0 is an invalid value.
  • The lowest bit will always be set for foreign handles and never set for Rust ones (since the leaked pointer will be aligned).

Rust handles are mainly managed is through the crate::HandleAlloc trait.

Tuple Fields§

§0: u64

Implementations§

§

impl Handle

pub fn from_pointer<T>(ptr: *const T) -> Handle

pub fn as_pointer<T>(&self) -> *const T

pub fn from_raw(raw: u64) -> Option<Handle>

pub fn from_raw_unchecked(raw: u64) -> Handle

pub fn as_raw(&self) -> u64

Trait Implementations§

§

impl Clone for Handle

§

fn clone(&self) -> Handle

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for Handle

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Default for Handle

§

fn default() -> Handle

Returns the “default value” for a type. Read more
§

impl FfiDefault for Handle

§

impl PartialEq<Handle> for Handle

§

fn eq(&self, other: &Handle) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl Copy for Handle

§

impl Eq for Handle

§

impl StructuralEq for Handle

§

impl StructuralPartialEq for Handle

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, UT> HandleAlloc<UT> for Twhere T: Send + Sync,

§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.