pub struct ReadSignal<T, S = SyncStorage> { /* private fields */ }Expand description
An arena-allocated getter for a reactive signal.
A signal is a piece of data that may change over time, and notifies other code when it has changed.
This is an arena-allocated signal, which is Copy and is disposed when its reactive
Owner cleans up. For a reference-counted signal that lives
as long as a reference to it is alive, see ArcReadSignal.
§Core Trait Implementations
.get()clones the current value of the signal. If you call it within an effect, it will cause that effect to subscribe to the signal, and to re-run whenever the value of the signal changes..get_untracked()clones the value of the signal without reactively tracking it.
.read()returns a guard that allows accessing the value of the signal by reference. If you call it within an effect, it will cause that effect to subscribe to the signal, and to re-run whenever the value of the signal changes..read_untracked()gives access to the current value of the signal without reactively tracking it.
.with()allows you to reactively access the signal’s value without cloning by applying a callback function..with_untracked()allows you to access the signal’s value by applying a callback function without reactively tracking it.
.to_stream()converts the signal to anasyncstream of values.::from_stream()converts anasyncstream of values into a signal containing the latest value.
§Examples
let (count, set_count) = signal(0);
// calling .get() clones and returns the value
assert_eq!(count.get(), 0);
// calling .read() accesses the value by reference
assert_eq!(count.read(), 0);Trait Implementations§
Source§impl<T, S> Clone for ReadSignal<T, S>
impl<T, S> Clone for ReadSignal<T, S>
Source§fn clone(&self) -> ReadSignal<T, S>
fn clone(&self) -> ReadSignal<T, S>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl<T, S> Copy for ReadSignal<T, S>
Source§impl<T, S> Debug for ReadSignal<T, S>where
S: Debug,
impl<T, S> Debug for ReadSignal<T, S>where
S: Debug,
Source§impl<T, S> DefinedAt for ReadSignal<T, S>
impl<T, S> DefinedAt for ReadSignal<T, S>
Source§fn defined_at(&self) -> Option<&'static Location<'static>>
fn defined_at(&self) -> Option<&'static Location<'static>>
Returns the location at which the signal was defined. This is usually simply
None in
release mode.Source§impl<T, S> Dispose for ReadSignal<T, S>
impl<T, S> Dispose for ReadSignal<T, S>
impl<T, S> Eq for ReadSignal<T, S>
Source§impl<T> From<ArcReadSignal<T>> for ReadSignal<T>
impl<T> From<ArcReadSignal<T>> for ReadSignal<T>
Source§fn from(value: ArcReadSignal<T>) -> ReadSignal<T>
fn from(value: ArcReadSignal<T>) -> ReadSignal<T>
Converts to this type from the input type.
Source§impl<T> FromLocal<ArcReadSignal<T>> for ReadSignal<T, LocalStorage>where
T: 'static,
impl<T> FromLocal<ArcReadSignal<T>> for ReadSignal<T, LocalStorage>where
T: 'static,
Source§fn from_local(value: ArcReadSignal<T>) -> ReadSignal<T, LocalStorage>
fn from_local(value: ArcReadSignal<T>) -> ReadSignal<T, LocalStorage>
Converts between the types.
Source§impl<T, S> Hash for ReadSignal<T, S>
impl<T, S> Hash for ReadSignal<T, S>
Source§impl<T, S> IntoInner for ReadSignal<T, S>where
S: Storage<ArcReadSignal<T>>,
impl<T, S> IntoInner for ReadSignal<T, S>where
S: Storage<ArcReadSignal<T>>,
Source§impl<T, S> IsDisposed for ReadSignal<T, S>
impl<T, S> IsDisposed for ReadSignal<T, S>
Source§fn is_disposed(&self) -> bool
fn is_disposed(&self) -> bool
If
true, the signal cannot be accessed without a panic.Source§impl<T, S> PartialEq for ReadSignal<T, S>
impl<T, S> PartialEq for ReadSignal<T, S>
Source§impl<T, S> ReadUntracked for ReadSignal<T, S>where
T: 'static,
S: Storage<ArcReadSignal<T>>,
impl<T, S> ReadUntracked for ReadSignal<T, S>where
T: 'static,
S: Storage<ArcReadSignal<T>>,
Source§type Value = ReadGuard<T, Plain<T>>
type Value = ReadGuard<T, Plain<T>>
The guard type that will be returned, which can be dereferenced to the value.
Source§fn try_read_untracked(
&self,
) -> Option<<ReadSignal<T, S> as ReadUntracked>::Value>
fn try_read_untracked( &self, ) -> Option<<ReadSignal<T, S> as ReadUntracked>::Value>
Returns the guard, or
None if the signal has already been disposed.Source§fn read_untracked(&self) -> Self::Value
fn read_untracked(&self) -> Self::Value
Returns the guard. Read more
Source§fn custom_try_read(&self) -> Option<Option<Self::Value>>
fn custom_try_read(&self) -> Option<Option<Self::Value>>
This is a backdoor to allow overriding the
Read::try_read implementation despite it being auto implemented. Read moreAuto Trait Implementations§
impl<T, S> Freeze for ReadSignal<T, S>
impl<T, S> RefUnwindSafe for ReadSignal<T, S>
impl<T, S> Send for ReadSignal<T, S>
impl<T, S> Sync for ReadSignal<T, S>
impl<T, S> Unpin for ReadSignal<T, S>
impl<T, S> UnsafeUnpin for ReadSignal<T, S>
impl<T, S> UnwindSafe for ReadSignal<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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn 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.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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.Source§fn as_any(&self) -> &(dyn Any + 'static)
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.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
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> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<S, T> FromStream<T> for S
impl<S, T> FromStream<T> for S
Source§fn from_stream(stream: impl Stream<Item = T> + Send + 'static) -> S
fn from_stream(stream: impl Stream<Item = T> + Send + 'static) -> S
Creates a signal that contains the latest value of the stream.
Source§fn from_stream_unsync(stream: impl Stream<Item = T> + 'static) -> S
fn from_stream_unsync(stream: impl Stream<Item = T> + 'static) -> S
Creates a signal that contains the latest value of the stream.
Source§impl<T> Get for T
impl<T> Get for T
Source§impl<T> GetUntracked for T
impl<T> GetUntracked for T
Source§type Value = <T as WithUntracked>::Value
type Value = <T as WithUntracked>::Value
The type of the value contained in the signal.
Source§fn try_get_untracked(&self) -> Option<<T as GetUntracked>::Value>
fn try_get_untracked(&self) -> Option<<T as GetUntracked>::Value>
Clones and returns the value of the signal,
or
None if the signal has already been disposed.Source§fn get_untracked(&self) -> Self::Value
fn get_untracked(&self) -> Self::Value
Clones and returns the value of the signal, Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> ReactiveNode for Twhere
T: AsSubscriberSet + DefinedAt,
impl<T> ReactiveNode for Twhere
T: AsSubscriberSet + DefinedAt,
Source§fn mark_dirty(&self)
fn mark_dirty(&self)
Notifies the source’s dependencies that it has changed.
Source§fn mark_check(&self)
fn mark_check(&self)
Notifies the source’s dependencies that it may have changed.
Source§fn mark_subscribers_check(&self)
fn mark_subscribers_check(&self)
Marks that all subscribers need to be checked.
Source§fn update_if_necessary(&self) -> bool
fn update_if_necessary(&self) -> bool
Regenerates the value for this node, if needed, and returns whether
it has actually changed or not.
Source§impl<T> Read for Twhere
T: Track + ReadUntracked,
impl<T> Read for Twhere
T: Track + ReadUntracked,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Source for Twhere
T: AsSubscriberSet + DefinedAt,
impl<T> Source for Twhere
T: AsSubscriberSet + DefinedAt,
Source§fn clear_subscribers(&self)
fn clear_subscribers(&self)
Remove all subscribers from this source’s list of dependencies.
Source§fn add_subscriber(&self, subscriber: AnySubscriber)
fn add_subscriber(&self, subscriber: AnySubscriber)
Adds a subscriber to this source’s list of dependencies.
Source§fn remove_subscriber(&self, subscriber: &AnySubscriber)
fn remove_subscriber(&self, subscriber: &AnySubscriber)
Removes a subscriber from this source’s list of dependencies.
Source§impl<T> StorageAccess<T> for T
impl<T> StorageAccess<T> for T
Source§fn as_borrowed(&self) -> &T
fn as_borrowed(&self) -> &T
Borrows the value.
Source§fn into_taken(self) -> T
fn into_taken(self) -> T
Takes the value.
Source§impl<T> ToAnySource for Twhere
T: AsSubscriberSet + DefinedAt + IsDisposed,
<T as AsSubscriberSet>::Output: Borrow<Arc<RwLock<SubscriberSet>>>,
impl<T> ToAnySource for Twhere
T: AsSubscriberSet + DefinedAt + IsDisposed,
<T as AsSubscriberSet>::Output: Borrow<Arc<RwLock<SubscriberSet>>>,
Source§fn to_any_source(&self) -> AnySource
fn to_any_source(&self) -> AnySource
Converts this type to its type-erased equivalent.
impl<T> WasmNotSend for Twhere
T: Send,
impl<T> WasmNotSendSync for Twhere
T: WasmNotSend + WasmNotSync,
impl<T> WasmNotSync for Twhere
T: Sync,
Source§impl<T> With for Twhere
T: Read,
impl<T> With for Twhere
T: Read,
Source§type Value = <<T as Read>::Value as Deref>::Target
type Value = <<T as Read>::Value as Deref>::Target
The type of the value contained in the signal.
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
Source§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Source§impl<T> WithUntracked for Twhere
T: DefinedAt + ReadUntracked,
impl<T> WithUntracked for Twhere
T: DefinedAt + ReadUntracked,
Source§type Value = <<T as ReadUntracked>::Value as Deref>::Target
type Value = <<T as ReadUntracked>::Value as Deref>::Target
The type of the value contained in the signal.
Source§fn try_with_untracked<U>(
&self,
fun: impl FnOnce(&<T as WithUntracked>::Value) -> U,
) -> Option<U>
fn try_with_untracked<U>( &self, fun: impl FnOnce(&<T as WithUntracked>::Value) -> U, ) -> Option<U>
Applies the closure to the value, and returns the result,
or
None if the signal has already been disposed.