cushy::value

Struct DynamicReader

source
pub struct DynamicReader<T> { /* private fields */ }
Expand description

A reader of a Dynamic<T> that tracks the last generation accessed.

Implementations§

source§

impl DynamicReader<WidgetInstance>

source

pub fn into_switcher(self) -> Switcher

Returns a new Switcher widget whose contents is the value of this dynamic reader.

source

pub fn to_switcher(&self) -> Switcher

Returns a new Switcher widget whose contents is the value of this dynamic reader.

source§

impl<T> DynamicReader<T>

source

pub fn lock(&self) -> DynamicGuard<'_, T, true>

Returns an read-only, exclusive reference to the contents of this dynamic.

This call will block until all other guards for this dynamic have been dropped.

§Panics

This function panics if this value is already locked by the current thread.

source

pub fn read_generation(&self) -> Generation

Returns the current generation that has been accessed through this reader.

source

pub fn has_updated(&self) -> bool

Returns true if the dynamic has been modified since the last time the value was accessed through this reader.

§Panics

This function panics if this value is already locked by the current thread.

source

pub fn block_until_updated(&self) -> bool

Blocks the current thread until the contained value has been updated or there are no remaining writers for the value.

Returns true if a newly updated value was discovered.

§Panics

This function panics if this value is already locked by the current thread.

source

pub fn connected(&self) -> bool

Returns true if this reader still has any writers connected to it.

source

pub fn wait_until_updated(&self) -> BlockUntilUpdatedFuture<'_, T>

Suspends the current async task until the contained value has been updated or there are no remaining writers for the value.

Returns true if a newly updated value was discovered.

source

pub fn on_disconnect<OnDisconnect>(&self, on_disconnect: OnDisconnect)
where OnDisconnect: FnOnce() + Send + 'static,

Invokes on_disconnect when no instances of Dynamic<T> exist.

This callback will be invoked even if this DynamicReader has been dropped.

§Panics

This function panics if this value is already locked by the current thread.

Trait Implementations§

source§

impl<T> Clone for DynamicReader<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 for DynamicReader<T>
where T: Debug,

source§

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

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

impl<T> Displayable<T> for DynamicReader<T>
where T: Debug + Display + Send + 'static,

source§

fn into_displayable(self) -> DynamicReader<T>

Returns this value as a displayable reader.
source§

fn into_label(self) -> Label<T>
where Self: Sized, T: Debug + Display + Send + 'static,

Returns self being Displayed in a Label widget.
source§

fn to_label(&self) -> Label<T>
where Self: Clone,

Returns self being Displayed in a Label widget.
source§

impl<T> Drop for DynamicReader<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<T> DynamicRead<T> for DynamicReader<T>

source§

fn read(&self) -> DynamicGuard<'_, T, true>

Returns a guard that provides exclusive, read-only access to the value contained wihtin this dynamic.
source§

impl<T> From<Dynamic<T>> for DynamicReader<T>

source§

fn from(value: Dynamic<T>) -> Self

Converts to this type from the input type.
source§

impl<T> From<DynamicReader<T>> for ReadOnly<T>

source§

fn from(value: DynamicReader<T>) -> Self

Converts to this type from the input type.
source§

impl<T> IntoReadOnly<T> for DynamicReader<T>

source§

fn into_read_only(self) -> ReadOnly<T>

Returns self as a ReadOnly.
source§

impl<T> IntoReader<T> for DynamicReader<T>

source§

fn into_reader(self) -> DynamicReader<T>

Returns this value as a reader.
source§

impl<T> Source<T> for DynamicReader<T>

source§

fn try_map_generational<R>( &self, map: impl FnOnce(DynamicGuard<'_, T, true>) -> R, ) -> Result<R, DeadlockError>

Maps the contents with read-only access, providing access to the value’s Generation.
source§

fn for_each_subsequent_generational_try<F>(&self, for_each: F) -> CallbackHandle
where T: Send + 'static, F: for<'a> FnMut(DynamicGuard<'_, T, true>) -> Result<(), CallbackDisconnected> + Send + 'static,

Attaches for_each to this value so that it is invoked each time the source’s contents are updated. Read more
source§

fn for_each_generational_cloned_try<F>(&self, for_each: F) -> CallbackHandle
where T: Clone + Send + 'static, F: FnMut(GenerationalValue<T>) -> Result<(), CallbackDisconnected> + Send + 'static,

Invokes for_each with the current contents and each time this source’s contents are updated. Read more
source§

fn map_generational<R>( &self, map: impl FnOnce(DynamicGuard<'_, T, true>) -> R, ) -> R

Maps the contents with read-only access, providing access to the value’s Generation. Read more
source§

fn generation(&self) -> Generation

Returns the current generation of the value. Read more
source§

fn map_ref<R>(&self, map: impl FnOnce(&T) -> R) -> R

Maps the contents with read-only access. Read more
source§

fn try_map_ref<R>(&self, map: impl FnOnce(&T) -> R) -> Result<R, DeadlockError>

Maps the contents with read-only access.

Auto Trait Implementations§

§

impl<T> !Freeze for DynamicReader<T>

§

impl<T> !RefUnwindSafe for DynamicReader<T>

§

impl<T> Send for DynamicReader<T>
where T: Send,

§

impl<T> Sync for DynamicReader<T>
where T: Send,

§

impl<T> Unpin for DynamicReader<T>

§

impl<T> !UnwindSafe for DynamicReader<T>

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
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, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
§

impl<A> Cast for A

§

fn cast<To>(self) -> To
where To: CastFrom<A>,

Casts self to the To type. This may be a lossy operation.
§

impl<A> CastFrom<A> for A

§

fn from_cast(from: A) -> A

Returns from as Self.
§

impl<A, B> CastInto<A> for B
where A: CastFrom<B>,

§

fn cast_into(self) -> A

Returns self as To.
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromAngle<T> for T

source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
§

impl<T> Instrument for T

§

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

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

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 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> IntoAngle<U> for T
where U: FromAngle<T>,

source§

fn into_angle(self) -> U

Performs a conversion into T.
source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> IntoReadOnly<T> for T

source§

fn into_read_only(self) -> ReadOnly<T>

Returns self as a ReadOnly.
source§

impl<T> IntoStimulus<T> for T

source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
source§

impl<T> IntoValue<Option<T>> for T

source§

fn into_value(self) -> Value<Option<T>>

Returns this type as a Value.
source§

impl<T> IntoValue<T> for T

source§

fn into_value(self) -> Value<T>

Returns this type as a Value.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> Progressable<U> for T
where T: IntoReader<U> + Send, U: ProgressValue + Send,

source§

fn progress_bar(self) -> ProgressBar

Returns a new progress bar that displays progress from T::MIN to T::MAX.
source§

fn progress_bar_to(self, max: impl IntoReadOnly<T::Value>) -> ProgressBar
where T::Value: PartialEq + Ranged + Send + Clone,

Returns a new progress bar that displays progress from T::MIN to max. The maximum value can be either a T or an Option<T>. If None is the maximum value, an indeterminant progress bar will be displayed.
source§

fn progress_bar_between<Range>(self, range: Range) -> ProgressBar
where T::Value: Send, Range: IntoReadOnly<RangeInclusive<T::Value>>,

Returns a new progress bar that displays progress over the specified range of T. The range can be either a T..=T or an Option<T>. If None is specified as the range, an indeterminant progress bar will be displayed.
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> Trackable for T
where T: Trackable,

source§

fn redraw_when_changed(&self, context: &WidgetContext<'_>)
where Self: Sized,

Marks the widget for redraw when this value is updated. Read more
source§

fn invalidate_when_changed(&self, context: &WidgetContext<'_>)
where Self: Sized,

Marks the widget for redraw when this value is updated. Read more
source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. 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.
source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,