Skip to main content

State

Struct State 

Source
pub struct State<T: Clone + 'static> { /* private fields */ }
Expand description

Cheap copyable read-only view of a state cell.

Implementations§

Source§

impl<T: Clone + 'static> State<T>

Source

pub fn is_alive(&self) -> bool

Source

pub fn try_with<R>(&self, f: impl FnOnce(&T) -> R) -> Option<R>

Source

pub fn try_value(&self) -> Option<T>

Source

pub fn with<R>(&self, f: impl FnOnce(&T) -> R) -> R

Source

pub fn value(&self) -> T

Source

pub fn get(&self) -> T

Source

pub fn has_subscribers(&self) -> bool

Source

pub fn on_subscriber(&self, callback: Rc<dyn Fn()>)

Source

pub fn subscription_hold(&self) -> StateSubscriptionHold

Counts this state as subscribed for as long as the returned guard lives, without observing it from any scope.

Snapshot observers subscribe reads made under composition or the draw phase, and producers gated on State::has_subscribers — an infinite transition, for one — stop themselves when the last such subscriber leaves. A consumer that reads the value from a polling context (a frame effect stepping it into a derived state, a background task) is invisible to that accounting and would starve the producer it depends on. Holding this guard keeps the producer alive; dropping it releases the count.

Trait Implementations§

Source§

impl<T: Clone + 'static> Clone for State<T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<T: Clone + 'static> Copy for State<T>

Source§

impl<T: Debug + Clone + 'static> Debug for State<T>

Source§

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

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

impl<T: Clone + 'static> Eq for State<T>

Source§

impl<T: Clone + 'static> PartialEq for State<T>

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more

Auto Trait Implementations§

§

impl<T> Freeze for State<T>
where PhantomData<fn() -> T>: Freeze,

§

impl<T> RefUnwindSafe for State<T>
where PhantomData<fn() -> T>: RefUnwindSafe,

§

impl<T> Send for State<T>
where PhantomData<fn() -> T>: Send,

§

impl<T> Sync for State<T>
where PhantomData<fn() -> T>: Sync,

§

impl<T> Unpin for State<T>
where PhantomData<fn() -> T>: Unpin,

§

impl<T> UnsafeUnpin for State<T>
where PhantomData<fn() -> T>: UnsafeUnpin,

§

impl<T> UnwindSafe for State<T>
where PhantomData<fn() -> T>: UnwindSafe,

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 = !

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.