cushy::reactive::value

Struct Owned

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

A unique, reactive value.

This type is useful for situations where a value is owned by exactly one type but needs to have reactivity through Source/Destination.

A Dynamic utilizes a Arc + [Mutex] to support updating its values from multiple threads. This type utilizes a RefCell, preventing it from being shared between multiple threads.

Implementations§

Source§

impl<T> Owned<T>

Source

pub fn new(value: T) -> Self

Returns a new reactive value.

Source

pub fn borrow(&self) -> OwnedRef<'_, T>

Borrows the contents of this value with read-only access.

Source

pub fn borrow_mut(&mut self) -> OwnedMut<'_, T>

Borrows the contents of this value with exclusive access.

When the returned type is accessed through DerefMut, all associated reactive callbacks will be invoked upon dropping the returned OwnedMut.

Source

pub fn into_inner(self) -> T

Returns the contained value.

Trait Implementations§

Source§

impl<T: Default> Default for Owned<T>

Source§

fn default() -> Owned<T>

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

impl<'de, T> Deserialize<'de> for Owned<T>
where T: Deserialize<'de>,

Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<T> Destination<T> for Owned<T>
where T: 'static,

Source§

fn try_map_mut<R>( &self, map: impl FnOnce(Mutable<'_, T>) -> R, ) -> Result<R, DeadlockError>

Maps the contents with exclusive access. Before returning from this function, all observers will be notified that the contents have been updated.
Source§

fn map_mut<R>(&self, map: impl FnOnce(Mutable<'_, T>) -> R) -> R

Maps the contents with exclusive access. Before returning from this function, all observers will be notified that the contents have been updated. Read more
Source§

fn try_replace(&self, new_value: T) -> Result<T, ReplaceError<T>>
where T: PartialEq,

Replaces the contents with new_value if new_value is different than the currently stored value. If the value is updated, the previous contents are returned. Read more
Source§

fn replace(&self, new_value: T) -> Option<T>
where T: PartialEq,

Replaces the contents with new_value, returning the previous contents. Before returning from this function, all observers will be notified that the contents have been updated. Read more
Source§

fn set(&self, new_value: T)
where T: PartialEq,

Stores new_value in this dynamic. Before returning from this function, all observers will be notified that the contents have been updated. Read more
Source§

fn try_compare_swap( &self, expected_current: &T, new_value: T, ) -> Result<T, TryCompareSwapError<T>>
where T: Clone + PartialEq,

Replaces the current value with new_value if the current value is equal to expected_current. Read more
Source§

fn compare_swap(&self, expected_current: &T, new_value: T) -> Result<T, T>
where T: Clone + PartialEq,

Replaces the current value with new_value if the current value is equal to expected_current. Read more
Source§

fn toggle(&self) -> T
where T: Not<Output = T> + Clone,

Updates the value to the result of invoking Not on the current value. This function returns the new value.
Source§

fn take(&self) -> T
where Self: Source<T>, T: Default,

Returns the currently stored value, replacing the current contents with T::default(). Read more
Source§

fn take_if_not_default(&self) -> Option<T>
where T: Default + PartialEq,

Checks if the currently stored value is different than T::default(), and if so, returns Some(self.take()). Read more
Source§

impl<T> From<Owned<T>> for ReadOnly<T>

Source§

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

Converts to this type from the input type.
Source§

impl<T> IntoReadOnly<T> for Owned<T>

Source§

fn into_read_only(self) -> ReadOnly<T>

Returns self as a ReadOnly.
Source§

impl<T> Serialize for Owned<T>
where T: Serialize,

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<T> Source<T> for Owned<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 on_change_try<F>(&self, on_change: F) -> CallbackHandle
where T: Send + 'static, F: FnMut() -> Result<(), CallbackDisconnected> + Send + 'static,

Executes on_change when the contents of this dynamic are updated. Read more
Source§

fn for_each_subsequent_generational_try<F>(&self, for_each: F) -> CallbackHandle
where T: Send + 'static, F: for<'a> FnMut(DynamicGuard<'a, 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_subsequent_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 get(&self) -> T
where T: Clone,

Returns a clone of the currently contained value. Read more
Source§

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

Maps the contents with read-only access.
Source§

fn try_get(&self) -> Result<T, DeadlockError>
where T: Clone,

Returns a clone of the currently contained value.
Source§

fn on_change<F>(&self, on_change: F) -> CallbackHandle
where T: Send + 'static, F: FnMut() + Send + 'static,

Executes on_change when the contents of this dynamic are updated.
Source§

fn for_each_subsequent_generational<F>(&self, for_each: F) -> CallbackHandle
where T: Send + 'static, F: for<'a> FnMut(DynamicGuard<'_, T, true>) + 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_subsequent_try<F>(&self, for_each: F) -> CallbackHandle
where T: Send + 'static, F: for<'a> FnMut(&'a T) -> 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_subsequent<F>(&self, for_each: F) -> CallbackHandle
where T: Send + 'static, F: for<'a> FnMut(&'a T) + 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_try<F>(&self, for_each: F) -> CallbackHandle
where T: Send + 'static, F: for<'a> FnMut(DynamicGuard<'_, T, true>) -> Result<(), CallbackDisconnected> + Send + 'static,

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

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

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

fn for_each_try<F>(&self, for_each: F) -> CallbackHandle
where T: Send + 'static, F: for<'a> FnMut(&'a 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 for_each<F>(&self, for_each: F) -> CallbackHandle
where T: Send + 'static, F: for<'a> FnMut(&'a T) + Send + 'static,

Invokes for_each with the current contents and each time this source’s contents are updated.
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 for_each_cloned_try<F>(&self, for_each: F) -> CallbackHandle
where T: Clone + Send + 'static, F: FnMut(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 for_each_subsequent_cloned_try<F>(&self, for_each: F) -> CallbackHandle
where T: Clone + Send + 'static, F: FnMut(T) -> Result<(), CallbackDisconnected> + Send + 'static,

Invokes for_each each time this source’s contents are updated. Read more
Source§

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

Invokes for_each each time this source’s contents are updated.
Source§

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

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

fn for_each_notify(&self, notify: impl Into<Notify<T>>) -> CallbackHandle
where T: Unpin + Clone + Send + 'static,

Notifies notify with a clone of the current contents each time this source’s contents are updated.
Source§

fn for_each_try_notify(&self, notify: impl Into<Notify<T>>) -> CallbackHandle
where T: Unpin + Clone + Send + 'static,

Notifies notify with a clone of the current contents each time this source’s contents are updated, disconnecting the callback if the target is disconnected.
Source§

fn debounced_every(&self, period: Duration) -> Dynamic<T>
where T: PartialEq + Clone + Send + Sync + 'static,

Returns a new dynamic that contains the updated contents of this dynamic at most once every period.
Source§

fn debounced_with_delay(&self, period: Duration) -> Dynamic<T>
where T: PartialEq + Clone + Send + Sync + 'static,

Returns a new dynamic that contains the updated contents of this dynamic delayed by period. Each time this value is updated, the delay is reset.
Source§

fn map_each_generational<R, F>(&self, map: F) -> Dynamic<R>
where T: Send + 'static, F: for<'a> FnMut(DynamicGuard<'a, T, true>) -> R + Send + 'static, R: PartialEq + Send + 'static,

Creates a new dynamic value that contains the result of invoking map each time this value is changed.
Source§

fn map_each<R, F>(&self, map: F) -> Dynamic<R>
where T: Send + 'static, F: for<'a> FnMut(&'a T) -> R + Send + 'static, R: PartialEq + Send + 'static,

Creates a new dynamic value that contains the result of invoking map each time this value is changed.
Source§

fn map_each_cloned<R, F>(&self, map: F) -> Dynamic<R>
where T: Clone + Send + 'static, F: FnMut(T) -> R + Send + 'static, R: PartialEq + Send + 'static,

Creates a new dynamic value that contains the result of invoking map each time this value is changed.
Source§

fn weak_clone(&self) -> Dynamic<T>
where T: Clone + Send + 'static,

Returns a new Dynamic that contains a clone of each value from self. Read more
Source§

fn map_each_into<U>(&self) -> Dynamic<U>
where U: PartialEq + From<T> + Send + 'static, T: Clone + Send + 'static,

Returns a new dynamic that is updated using U::from(T.clone()) each time self is updated.
Source§

fn map_each_to<U>(&self) -> Dynamic<U>
where U: PartialEq + for<'a> From<&'a T> + Send + 'static, T: Clone + Send + 'static,

Returns a new dynamic that is updated using U::from(&T) each time self is updated.
Source§

impl<'s, T, U> Unwrapped<U> for &'s Owned<T>
where for<'a> &'a T: IntoOption<&'a U>, T: Send + 'static, U: Clone + Send + 'static,

Source§

type Value<'a> = &'a U

The value type provided to the for each functions.
Source§

fn unwrapped_or_else(self, initial: impl FnOnce() -> U) -> Dynamic<U>

Returns a dynamic that is updated with the unwrapped contents of thie source. Read more
Source§

fn for_each_unwrapped_try<ForEach>(self, for_each: ForEach) -> CallbackHandle
where ForEach: for<'a> FnMut(Self::Value<'a>) -> Result<(), CallbackDisconnected> + Send + 'static,

Invokes for_each when self is updated with a value that can be unwrapped. Read more
Source§

fn unwrapped(self) -> Dynamic<T>
where T: Default,

Returns a dynamic that is updated with the unwrapped contents of thie source. Read more
Source§

fn for_each_unwrapped<ForEach>(self, for_each: ForEach) -> CallbackHandle
where ForEach: for<'a> FnMut(Self::Value<'a>) + Send + 'static,

Invokes for_each when self is updated with a value that can be unwrapped.

Auto Trait Implementations§

§

impl<T> !Freeze for Owned<T>

§

impl<T> !RefUnwindSafe for Owned<T>

§

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

§

impl<T> !Sync for Owned<T>

§

impl<T> Unpin for Owned<T>
where T: Unpin,

§

impl<T> !UnwindSafe for Owned<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, 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.
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> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent 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<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
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
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

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

§

impl<T> MaybeSendSync for T

§

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