WeakSignal

Struct WeakSignal 

Source
pub struct WeakSignal<Args, R = (), C = DefaultCombiner, G = i32>
where Args: Clone + 'static, R: 'static, C: Combiner<R> + 'static, G: Ord + Send + Sync + 'static,
{ /* private fields */ }
Expand description

A weak reference to a signal’s slots. Useful for allowing slots to maintain a persistant reference to their owning signal without causing a memory leak.

§Example

use signals2::*;

let sig: Signal<()> = Signal::new();
let weak_sig = sig.weak();
sig.connect(move || {
    // if we had captured a cloned sig here it would cause a memory leak.
    // Signals maintain strong references to their slot functions, so a slot function
    // should not maintain a strong reference to its own signal or else a memory leak
    // will occur.
    weak_sig.upgrade().unwrap().connect(|| println!("Hello, world!"));
});
 
sig.emit(); // prints nothing
sig.emit(); // prints "Hello, world!" once
sig.emit(); // prints "Hello, world!" twice
// etc...

Implementations§

Source§

impl<Args, R, C, G> WeakSignal<Args, R, C, G>
where Args: Clone + 'static, R: 'static, C: Combiner<R> + 'static, G: Ord + Send + Sync + 'static,

Source

pub fn upgrade(&self) -> Option<Signal<Args, R, C, G>>

Returns Some(sig) where sig is the singal that the weak signal was created from. If the original signal (and all other clones of it) have been dropped, returns None.

Trait Implementations§

Source§

impl<Args, R, C, G> Clone for WeakSignal<Args, R, C, G>
where Args: Clone + 'static, R: 'static, C: Combiner<R> + 'static, G: Ord + Send + Sync + 'static,

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<Args, R, C, G> Freeze for WeakSignal<Args, R, C, G>

§

impl<Args, R, C, G> RefUnwindSafe for WeakSignal<Args, R, C, G>

§

impl<Args, R, C, G> Send for WeakSignal<Args, R, C, G>

§

impl<Args, R, C, G> Sync for WeakSignal<Args, R, C, G>

§

impl<Args, R, C, G> Unpin for WeakSignal<Args, R, C, G>

§

impl<Args, R, C, G> UnwindSafe for WeakSignal<Args, R, C, G>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

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 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.