FinalizableHandle

Struct FinalizableHandle 

Source
pub struct FinalizableHandle { /* private fields */ }
Expand description

FinalizableHandle can be used as payload in super::Value::FinalizableHandle. Will be received in Dart as instance of FinalizableHandle. When the Dart instance gets garbage collected, the finalizer closure specified in `FinalizableHandle::new will be invoked.

FinalizableHandle must be created on main thread, but other methods are thread safe.

Implementations§

Source§

impl FinalizableHandle

Source

pub fn new<F: FnOnce() + 'static>( external_size: isize, isolate_id: IsolateId, finalizer: F, ) -> Self

Creates a new finalizable handle instance. Must be created on main thread and the finalizer will also be invoked on main thread.

If FinalizableHandle gets dropped the finalizer will not be executed. The finalizer is guaranteed to be executed even if the target isolate gets destroyed before it had chance to create dart weak persistent handle.

§Arguments
  • finalizer - closure that will be executed on main thread when the Dart object associated with this handle is garbage collected. The closure will not be invoked when this FinalizableHandle is dropped.

  • external_size - hit to garbage collector about how much memory is taken by native object. Used when determining memory pressure.

Source

pub fn is_attached(&self) -> bool

Whether this handle is attached to a Dart object. This will be false initially and becomes true once the Finalizable handle is send to Dart. false after the Dart counterpart gets garbage collected.

Source

pub fn is_finalized(&self) -> bool

Whether the Dart object was already garbage collected finalized.

Source

pub fn update_size(&self, size: isize)

Updates the external size. This is a hint to Dart garbage collector.

Trait Implementations§

Source§

impl Debug for FinalizableHandle

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Drop for FinalizableHandle

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Hash for FinalizableHandle

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for FinalizableHandle

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

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

impl PartialOrd for FinalizableHandle

Source§

fn partial_cmp(&self, other: &FinalizableHandle) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Eq for FinalizableHandle

Source§

impl StructuralPartialEq for FinalizableHandle

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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.

Source§

impl<T, U> Into<U> for T
where 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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 T
where U: TryFrom<T>,

Source§

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.