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>
impl<VTable: VTableMetaDropInPlace + 'static, Ret, Arg: ?Sized> ErasedWeakFn<VTable, Ret, Arg>
Sourcepub fn upgrade_and_call(&self, arg: &Arg) -> Option<Ret>
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>
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>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more