pub struct ObservableWriteGuard<'a, T: 'a, L: Lock = SyncLock> { /* private fields */ }
Expand description

A write guard for the inner value of an observable.

Note that as long as an ObservableWriteGuard is kept alive, the associated SharedObservable is locked and can not be updated except through that guard.

Implementations§

source§

impl<'a, T: 'a, L: Lock> ObservableWriteGuard<'a, T, L>

source

pub fn set(this: &mut Self, value: T) -> T

Set the inner value to the given value, notify subscribers and return the previous value.

source

pub fn set_if_not_eq(this: &mut Self, value: T) -> Option<T>where T: PartialEq,

Set the inner value to the given value if it doesn’t compare equal to the existing value.

If the inner value is set, subscribers are notified and Some(previous_value) is returned. Otherwise, None is returned.

source

pub fn set_if_hash_not_eq(this: &mut Self, value: T) -> Option<T>where T: Hash,

Set the inner value to the given value if it has a different hash than the existing value.

If the inner value is set, subscribers are notified and Some(previous_value) is returned. Otherwise, None is returned.

source

pub fn take(this: &mut Self) -> Twhere T: Default,

Set the inner value to a Default instance of its type, notify subscribers and return the previous value.

Shorthand for ObservableWriteGuard::set(this, T::default()).

source

pub fn update(this: &mut Self, f: impl FnOnce(&mut T))

Update the inner value and notify subscribers.

Note that even if the inner value is not actually changed by the closure, subscribers will be notified as if it was. Use update_if if you want to conditionally mutate the inner value.

source

pub fn update_if(this: &mut Self, f: impl FnOnce(&mut T) -> bool)

Maybe update the inner value and notify subscribers if it changed.

The closure given to this function must return true if subscribers should be notified of a change to the inner value.

Trait Implementations§

source§

impl<T: Debug> Debug for ObservableWriteGuard<'_, T>

source§

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

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

impl<T, L: Lock> Deref for ObservableWriteGuard<'_, T, L>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<'a, T, L> RefUnwindSafe for ObservableWriteGuard<'a, T, L>where <L as Lock>::RwLockWriteGuard<'a, ObservableState<T>>: RefUnwindSafe,

§

impl<'a, T, L> Send for ObservableWriteGuard<'a, T, L>where <L as Lock>::RwLockWriteGuard<'a, ObservableState<T>>: Send,

§

impl<'a, T, L> Sync for ObservableWriteGuard<'a, T, L>where <L as Lock>::RwLockWriteGuard<'a, ObservableState<T>>: Sync,

§

impl<'a, T, L> Unpin for ObservableWriteGuard<'a, T, L>where <L as Lock>::RwLockWriteGuard<'a, ObservableState<T>>: Unpin,

§

impl<'a, T, L> UnwindSafe for ObservableWriteGuard<'a, T, L>where <L as Lock>::RwLockWriteGuard<'a, ObservableState<T>>: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere 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 Twhere 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 Twhere 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.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more