Skip to main content

ErasedWeakFn

Struct ErasedWeakFn 

Source
pub struct ErasedWeakFn<VTable: VTableMetaDropInPlace + 'static, Ret, Arg: ?Sized = ()> { /* private fields */ }
Expand description

Runs a stored function on a mapped object as long as that object is still alive.

Create one from a VRcMapped and a function with VRcMapped::downgrade_erased_fn, then call Self::upgrade_and_call whenever you want to run the function on the object, passing the argument it expects (&() if it takes none). Once every strong reference to the object is gone, upgrade_and_call returns None and the function is not run.

The type is only parameterized by the argument and return types, not by the type of the mapped object, so code that stores an ErasedWeakFn is compiled once no matter how many mapped types it is used with.

Implementations§

Source§

impl<VTable: VTableMetaDropInPlace + 'static, Ret, Arg: ?Sized> ErasedWeakFn<VTable, Ret, Arg>

Source

pub fn upgrade_and_call(&self, arg: &Arg) -> Option<Ret>

Run the stored function on the object with arg, or return None if the object has been dropped.

Auto Trait Implementations§

§

impl<VTable, Ret, Arg = ()> !Send for ErasedWeakFn<VTable, Ret, Arg>

§

impl<VTable, Ret, Arg = ()> !Sync for ErasedWeakFn<VTable, Ret, Arg>

§

impl<VTable, Ret, Arg> Freeze for ErasedWeakFn<VTable, Ret, Arg>
where Arg: ?Sized,

§

impl<VTable, Ret, Arg> RefUnwindSafe for ErasedWeakFn<VTable, Ret, Arg>
where <VTable as VTableMeta>::VTable: RefUnwindSafe, Arg: ?Sized,

§

impl<VTable, Ret, Arg> Unpin for ErasedWeakFn<VTable, Ret, Arg>
where Arg: ?Sized,

§

impl<VTable, Ret, Arg> UnsafeUnpin for ErasedWeakFn<VTable, Ret, Arg>
where Arg: ?Sized,

§

impl<VTable, Ret, Arg> UnwindSafe for ErasedWeakFn<VTable, Ret, Arg>
where <VTable as VTableMeta>::VTable: RefUnwindSafe, Arg: ?Sized,

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.