pub struct ArcCowVar<T: VarValue, S>(/* private fields */);
Expand description
See Var::cow
.
Implementations§
source§impl<T: VarValue, S: Var<T>> ArcCowVar<T, S>
impl<T: VarValue, S: Var<T>> ArcCowVar<T, S>
sourcepub fn modify(
&self,
modify: impl FnOnce(&mut VarModify<'_, T>) + Send + 'static,
)
pub fn modify( &self, modify: impl FnOnce(&mut VarModify<'_, T>) + Send + 'static, )
Infallible Var::modify
.
sourcepub fn update(&self)
pub fn update(&self)
Infallible AnyVar::update
.
sourcepub fn set_from<I: Var<T>>(&self, other: &I)
pub fn set_from<I: Var<T>>(&self, other: &I)
Infallible Var::set_from
.
sourcepub fn set_from_map<Iv, I, M>(&self, other: &I, map: M)
pub fn set_from_map<Iv, I, M>(&self, other: &I, map: M)
Infallible Var::set_from_map
.
Trait Implementations§
source§impl<T: VarValue, S: Var<T>> AnyVar for ArcCowVar<T, S>
impl<T: VarValue, S: Var<T>> AnyVar for ArcCowVar<T, S>
source§fn clone_any(&self) -> BoxedAnyVar
fn clone_any(&self) -> BoxedAnyVar
Clone the variable into a type erased box. Read more
source§fn as_unboxed_any(&self) -> &dyn Any
fn as_unboxed_any(&self) -> &dyn Any
Access to
dyn Any
methods, on the underlying variable type if boxed.source§fn var_type_id(&self) -> TypeId
fn var_type_id(&self) -> TypeId
source§fn get_any(&self) -> Box<dyn AnyVarValue>
fn get_any(&self) -> Box<dyn AnyVarValue>
Get a clone of the current value, with type erased.
source§fn with_any(&self, read: &mut dyn FnMut(&dyn AnyVarValue))
fn with_any(&self, read: &mut dyn FnMut(&dyn AnyVarValue))
Visit the current value of the variable.
source§fn with_new_any(&self, read: &mut dyn FnMut(&dyn AnyVarValue)) -> bool
fn with_new_any(&self, read: &mut dyn FnMut(&dyn AnyVarValue)) -> bool
Visit the current value of the variable, if it
is_new
.source§fn set_any(&self, value: Box<dyn AnyVarValue>) -> Result<(), VarIsReadOnlyError>
fn set_any(&self, value: Box<dyn AnyVarValue>) -> Result<(), VarIsReadOnlyError>
Schedule a new
value
for the variable, it will be set in the end of the current app update. Read moresource§fn last_update(&self) -> VarUpdateId
fn last_update(&self) -> VarUpdateId
Last update ID a variable was modified, if the ID is equal to
VARS.update_id
the variable is new.source§fn is_contextual(&self) -> bool
fn is_contextual(&self) -> bool
If the variable represents different values depending on the context where they are read.
source§fn capabilities(&self) -> VarCapability
fn capabilities(&self) -> VarCapability
Flags that indicate what operations the variable is capable of in this update.
source§fn hook_any(
&self,
pos_modify_action: Box<dyn Fn(&AnyVarHookArgs<'_>) -> bool + Send + Sync>,
) -> VarHandle
fn hook_any( &self, pos_modify_action: Box<dyn Fn(&AnyVarHookArgs<'_>) -> bool + Send + Sync>, ) -> VarHandle
Setups a callback for just after the variable value update is applied, the closure runs in the root app context, just like
the
modify
closure. The closure can return if it is retained after each call. If you modify another variable in a
hook the modification applies in the same update, variable mapping and binding is implemented using hooks. Read moresource§fn hook_animation_stop(
&self,
handler: Box<dyn FnOnce() + Send>,
) -> Result<(), Box<dyn FnOnce() + Send>>
fn hook_animation_stop( &self, handler: Box<dyn FnOnce() + Send>, ) -> Result<(), Box<dyn FnOnce() + Send>>
Register a
handler
to be called when the current animation stops. Read moresource§fn strong_count(&self) -> usize
fn strong_count(&self) -> usize
Gets the number of strong references to the variable. Read more
source§fn weak_count(&self) -> usize
fn weak_count(&self) -> usize
Gets the number of weak references to the variable. Read more
source§fn actual_var_any(&self) -> BoxedAnyVar
fn actual_var_any(&self) -> BoxedAnyVar
Gets a clone of the represented var from
ContextVar<T>
, gets a clone of self
for other var types.source§fn downgrade_any(&self) -> BoxedAnyWeakVar
fn downgrade_any(&self) -> BoxedAnyWeakVar
Create a weak reference to this Arc variable. Read more
source§fn is_animating(&self) -> bool
fn is_animating(&self) -> bool
If the variable current value was set by an active animation. Read more
source§fn modify_importance(&self) -> usize
fn modify_importance(&self) -> usize
Gets a value that indicates the importance clearance that is needed to modify this variable. Read more
source§fn var_ptr(&self) -> VarPtr<'_>
fn var_ptr(&self) -> VarPtr<'_>
Var pointer, that can be used to identify if two variables point to the same rc or context. Read more
source§fn update(&self) -> Result<(), VarIsReadOnlyError>
fn update(&self) -> Result<(), VarIsReadOnlyError>
Schedule a variable update, even if the value does no change. Read more
source§impl<T: VarValue, S: Var<T>> Var<T> for ArcCowVar<T, S>
impl<T: VarValue, S: Var<T>> Var<T> for ArcCowVar<T, S>
source§type ReadOnly = ReadOnlyVar<T, ArcCowVar<T, S>>
type ReadOnly = ReadOnlyVar<T, ArcCowVar<T, S>>
Output of
Var::read_only
.source§type ActualVar = ArcCowVar<T, S>
type ActualVar = ArcCowVar<T, S>
Output of
Var::actual_var
.source§type Downgrade = WeakCowVar<T, S>
type Downgrade = WeakCowVar<T, S>
Output of
Var::downgrade
.source§type FlatMap<O: VarValue, V: Var<O>> = ArcFlatMapVar<O, V>
type FlatMap<O: VarValue, V: Var<O>> = ArcFlatMapVar<O, V>
Output of
Var::flat_map
.source§type FilterMap<O: VarValue> = ReadOnlyVar<O, ArcVar<O>>
type FilterMap<O: VarValue> = ReadOnlyVar<O, ArcVar<O>>
Output of
Var::filter_map
.source§type FilterMapBidi<O: VarValue> = ArcVar<O>
type FilterMapBidi<O: VarValue> = ArcVar<O>
Output of
Var::filter_map_bidi
.source§type MapRefBidi<O: VarValue> = MapRefBidi<T, O, ArcCowVar<T, S>>
type MapRefBidi<O: VarValue> = MapRefBidi<T, O, ArcCowVar<T, S>>
Output of
Var::map_ref_bidi
.source§type Easing = ReadOnlyVar<T, ArcVar<T>>
type Easing = ReadOnlyVar<T, ArcVar<T>>
Output of
Var::easing
.source§fn modify<F>(&self, modify: F) -> Result<(), VarIsReadOnlyError>
fn modify<F>(&self, modify: F) -> Result<(), VarIsReadOnlyError>
Schedule a variable update, it will be applied on the end of the current app update.
source§fn actual_var(self) -> Self
fn actual_var(self) -> Self
Gets the current inner var represented by this var. This can be the same var or a context var.
source§fn into_value(self) -> T
fn into_value(self) -> T
Convert this variable to the value, if possible moves the value, if it is shared clones it.
source§fn read_only(&self) -> Self::ReadOnly
fn read_only(&self) -> Self::ReadOnly
Gets a clone of the var that is always read-only. Read more
source§fn map<O, M>(&self, map: M) -> Self::Map<O>
fn map<O, M>(&self, map: M) -> Self::Map<O>
Creates a var that maps from this variable. Read more
source§fn map_bidi<O, M, B>(&self, map: M, map_back: B) -> Self::MapBidi<O>
fn map_bidi<O, M, B>(&self, map: M, map_back: B) -> Self::MapBidi<O>
Create a var that maps from this variable on read and to it on write. Read more
source§fn flat_map<O, V, M>(&self, map: M) -> Self::FlatMap<O, V>
fn flat_map<O, V, M>(&self, map: M) -> Self::FlatMap<O, V>
Create a var that maps to an inner variable that is found inside the value of this variable. Read more
source§fn filter_map<O, M, I>(&self, map: M, fallback: I) -> Self::FilterMap<O>
fn filter_map<O, M, I>(&self, map: M, fallback: I) -> Self::FilterMap<O>
Creates a ref-counted var that maps from this variable, but can retain a previous mapped value. Read more
source§fn filter_map_bidi<O, M, B, I>(
&self,
map: M,
map_back: B,
fallback: I,
) -> Self::FilterMapBidi<O>
fn filter_map_bidi<O, M, B, I>( &self, map: M, map_back: B, fallback: I, ) -> Self::FilterMapBidi<O>
Create a var that maps from this variable on read and to it on write, mapping in both directions can skip
updates, retaining the previous mapped value. Read more
source§fn map_ref<O, M>(&self, map: M) -> Self::MapRef<O>
fn map_ref<O, M>(&self, map: M) -> Self::MapRef<O>
Create a mapping wrapper around
self
. The map
closure is called for each value access, it must reference the
value O
that already exists in T
.source§fn map_ref_bidi<O, M, B>(&self, map: M, map_mut: B) -> Self::MapRefBidi<O>
fn map_ref_bidi<O, M, B>(&self, map: M, map_mut: B) -> Self::MapRefBidi<O>
Create a mapping wrapper around
self
. The map
closure is called for each value access, it must reference the
value O
that already exists in T
, the map_mut
closure is called for every modify request, it must do the same
as map
but with mutable access.source§fn easing_with<F, SE>(
&self,
duration: Duration,
easing: F,
sampler: SE,
) -> Self::Easingwhere
T: Transitionable,
F: Fn(EasingTime) -> EasingStep + Send + Sync + 'static,
SE: Fn(&Transition<T>, EasingStep) -> T + Send + Sync + 'static,
fn easing_with<F, SE>(
&self,
duration: Duration,
easing: F,
sampler: SE,
) -> Self::Easingwhere
T: Transitionable,
F: Fn(EasingTime) -> EasingStep + Send + Sync + 'static,
SE: Fn(&Transition<T>, EasingStep) -> T + Send + Sync + 'static,
source§fn boxed(self) -> BoxedVar<T>where
Self: Sized,
fn boxed(self) -> BoxedVar<T>where
Self: Sized,
Gets the variable as a
BoxedVar<T>
, does not double box.source§fn boxed_any(self) -> BoxedAnyVarwhere
Self: Sized,
fn boxed_any(self) -> BoxedAnyVarwhere
Self: Sized,
Gets the variable as a
BoxedAnyVar
, does not double box.source§fn hook(
&self,
pos_modify_action: impl Fn(&VarHookArgs<'_, T>) -> bool + Send + Sync + 'static,
) -> VarHandle
fn hook( &self, pos_modify_action: impl Fn(&VarHookArgs<'_, T>) -> bool + Send + Sync + 'static, ) -> VarHandle
Setups a callback for just after the variable value update is applied, the closure runs in the root app context, just like
the
modify
closure. The closure can return if it is retained after each call. If you modify another variable in a
hook the modification applies in the same update, variable mapping and binding is implemented using hooks. Read moresource§fn wait_update(&self) -> impl Future<Output = VarUpdateId> + Send + Sync
fn wait_update(&self) -> impl Future<Output = VarUpdateId> + Send + Sync
Awaits for the
last_update
to change. Read moresource§fn wait_value(
&self,
predicate: impl Fn(&T) -> bool + Send + Sync,
) -> impl Future<Output = ()> + Send + Sync
fn wait_value( &self, predicate: impl Fn(&T) -> bool + Send + Sync, ) -> impl Future<Output = ()> + Send + Sync
Awaits for a value that passes the
predicate
.source§fn with_new<R, F>(&self, read: F) -> Option<R>
fn with_new<R, F>(&self, read: F) -> Option<R>
Visit the current value of the variable, if it
is_new
.source§fn get_ne(&self, value: &mut T) -> bool
fn get_ne(&self, value: &mut T) -> bool
Get a clone of the current value into
value
if the current value is not equal to it.source§fn get_new_into(&self, value: &mut T) -> bool
fn get_new_into(&self, value: &mut T) -> bool
Get a clone of the current value into
value
if the current value is_new
.source§fn get_new_ne(&self, value: &mut T) -> bool
fn get_new_ne(&self, value: &mut T) -> bool
Get a clone of the current value into
value
if the variable value is_new
and not equal to the value
.source§fn set<I>(&self, value: I) -> Result<(), VarIsReadOnlyError>where
I: Into<T>,
fn set<I>(&self, value: I) -> Result<(), VarIsReadOnlyError>where
I: Into<T>,
Schedule a new
value
for the variable, it will be set in the end of the current app update.source§fn set_from<I>(&self, other: &I) -> Result<(), VarIsReadOnlyError>where
I: Var<T>,
fn set_from<I>(&self, other: &I) -> Result<(), VarIsReadOnlyError>where
I: Var<T>,
Schedule a new
value
for the variable, it will be set in the end of the current app update to the updated
value of other
, so if the other var has already scheduled an update, the updated value will be used. Read moresource§fn set_from_map<Iv, I, M>(
&self,
other: &I,
map: M,
) -> Result<(), VarIsReadOnlyError>
fn set_from_map<Iv, I, M>( &self, other: &I, map: M, ) -> Result<(), VarIsReadOnlyError>
Set from
other
value at the time of update, mapped to the type of self
.source§fn filter_try_into<O, I>(&self, fallback: I) -> Self::FilterMap<O>
fn filter_try_into<O, I>(&self, fallback: I) -> Self::FilterMap<O>
source§fn bind_filter_map<T2, V2, F>(&self, other: &V2, map: F) -> VarHandle
fn bind_filter_map<T2, V2, F>(&self, other: &V2, map: F) -> VarHandle
Setup a hook that assigns
other
with the new values of self
transformed by map
, if the closure returns a value. Read moresource§fn bind_map_bidi<T2, V2, M, B>(
&self,
other: &V2,
map: M,
map_back: B,
) -> VarHandles
fn bind_map_bidi<T2, V2, M, B>( &self, other: &V2, map: M, map_back: B, ) -> VarHandles
source§fn bind_filter_map_bidi<T2, V2, M, B>(
&self,
other: &V2,
map: M,
map_back: B,
) -> VarHandles
fn bind_filter_map_bidi<T2, V2, M, B>( &self, other: &V2, map: M, map_back: B, ) -> VarHandles
Bind
self
to other
and back with the new values of self
transformed by map
and the new values of other
transformed
by map_back
, the value is assigned in a update only if the closures returns a value. Read moresource§fn set_bind<V2>(&self, other: &V2) -> VarHandlewhere
V2: Var<T>,
fn set_bind<V2>(&self, other: &V2) -> VarHandlewhere
V2: Var<T>,
Calls
other.set_from(self)
and self.bind(other)
.source§fn bind_bidi<V2>(&self, other: &V2) -> VarHandleswhere
V2: Var<T>,
fn bind_bidi<V2>(&self, other: &V2) -> VarHandleswhere
V2: Var<T>,
Setup two hooks that assigns
other
with the new values of self
and self
with the new values of other
. Read moresource§fn trace_value<E, S>(&self, enter_value: E) -> VarHandle
fn trace_value<E, S>(&self, enter_value: E) -> VarHandle
Debug helper for tracing the lifetime of a value in this variable. Read more
source§fn animate<A>(&self, animate: A) -> AnimationHandle
fn animate<A>(&self, animate: A) -> AnimationHandle
Schedule an animation that targets this variable. Read more
source§fn sequence<A>(&self, animate: A) -> VarHandle
fn sequence<A>(&self, animate: A) -> VarHandle
Schedule animations started by
animate
, the closure is called once at the start to begin, then again every time
the variable stops animating. Read moresource§fn step_oci<N>(&self, new_value: N, delay: Duration) -> AnimationHandlewhere
N: Into<T>,
fn step_oci<N>(&self, new_value: N, delay: Duration) -> AnimationHandlewhere
N: Into<T>,
Oscillate between the current value and
new_value
, every time the delay
elapses the variable is set to the next value.source§fn set_step_oci<V0, V1>(
&self,
from: V0,
to: V1,
delay: Duration,
) -> AnimationHandle
fn set_step_oci<V0, V1>( &self, from: V0, to: V1, delay: Duration, ) -> AnimationHandle
Oscillate between
from
and to
, the variable is set to from
to start and every time the delay
elapses
the variable is set to the next value.source§fn steps<F>(
&self,
steps: Vec<(Factor, T)>,
duration: Duration,
easing: F,
) -> AnimationHandle
fn steps<F>( &self, steps: Vec<(Factor, T)>, duration: Duration, easing: F, ) -> AnimationHandle
Set the variable to a sequence of values as a time
duration
elapses. Read moresource§fn debug(&self) -> VarDebug<'_, T, Self>
fn debug(&self) -> VarDebug<'_, T, Self>
Returns a wrapper that implements
fmt::Debug
to write the var value.Auto Trait Implementations§
impl<T, S> Freeze for ArcCowVar<T, S>
impl<T, S> !RefUnwindSafe for ArcCowVar<T, S>
impl<T, S> Send for ArcCowVar<T, S>
impl<T, S> Sync for ArcCowVar<T, S>
impl<T, S> Unpin for ArcCowVar<T, S>
impl<T, S> !UnwindSafe for ArcCowVar<T, S>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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