Struct yrs::observer::Observer

source ·
pub struct Observer<E> { /* private fields */ }
Expand description

Data structure used to handle publish/subscribe callbacks of specific type. Observers perform subscriber changes in thread-safe manner, using atomic hardware intrinsics.

Implementations§

source§

impl<E> Observer<E>

source

pub fn new() -> Self

Creates a new Observer with no active callbacks.

source

pub fn has_subscribers(&self) -> bool

source

pub fn clean(&self)

Cleanup already released subscriptions. Whenever a Subscription is dropped, the callback is released. However, the weak reference to callback may still be kept around until it becomes touched by operations such as Observer::subscribe or Observer::callbacks.

This method allows to perform stale callback cleanup without waiting for callbacks to be visited.

source

pub fn subscribe<F>(&self, callback: F) -> Subscription
where F: Fn(&TransactionMut<'_>, &E) + 'static,

Subscribes a callback parameter to a current Observer. Returns a subscription object which - when dropped - will unsubscribe current callback.

source

pub fn callbacks(&self) -> Option<Callbacks<'_, E>>

Returns a snapshot of callbacks subscribed to this observer at the moment when this method has been called. This snapshot can be iterated over to get access to individual callbacks and trigger them.

Trait Implementations§

source§

impl<E: Debug> Debug for Observer<E>

source§

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

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

impl<E> Default for Observer<E>

source§

fn default() -> Self

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

impl<E: Send> Send for Observer<E>

source§

impl<E: Sync> Sync for Observer<E>

Auto Trait Implementations§

§

impl<E> !Freeze for Observer<E>

§

impl<E> !RefUnwindSafe for Observer<E>

§

impl<E> Unpin for Observer<E>

§

impl<E> !UnwindSafe for Observer<E>

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

§

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

§

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.