n0_watcher

Struct Watchable

Source
pub struct Watchable<T> { /* private fields */ }
Expand description

A wrapper around a value that notifies Watchers when the value is modified.

Only the most recent value is available to any observer, but the observer is guaranteed to be notified of the most recent value.

Implementations§

Source§

impl<T: Clone + Eq> Watchable<T>

Source

pub fn new(value: T) -> Self

Creates a Watchable initialized to given value.

Source

pub fn set(&self, value: T) -> Result<T, T>

Sets a new value.

Returns Ok(previous_value) if the value was different from the one set, or returns the provided value back as Err(value) if the value didn’t change.

Watchers are only notified if the value changed.

Source

pub fn watch(&self) -> Direct<T>

Creates a Direct Watcher, allowing the value to be observed, but not modified.

Source

pub fn get(&self) -> T

Returns the currently stored value.

Source

pub fn has_watchers(&self) -> bool

Returns true when there are any watchers actively listening on changes, or false when all watchers have been dropped or none have been created yet.

Trait Implementations§

Source§

impl<T> Clone for Watchable<T>

Source§

fn clone(&self) -> Self

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

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

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for Watchable<T>

Source§

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

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

impl<T: Default> Default for Watchable<T>

Source§

fn default() -> Watchable<T>

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

impl<T> Drop for Watchable<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Watchable<T>

§

impl<T> RefUnwindSafe for Watchable<T>

§

impl<T> Send for Watchable<T>
where T: Send + Sync,

§

impl<T> Sync for Watchable<T>
where T: Send + Sync,

§

impl<T> Unpin for Watchable<T>

§

impl<T> UnwindSafe for Watchable<T>

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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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.