Skip to main content

Signal

Struct Signal 

Source
pub struct Signal<T>
where T: Clone + PartialEq + 'static,
{ /* private fields */ }
Expand description

A reactive signal handle.

Allows reading, writing, and subscribing to changes. Implements Clone and Copy for ergonomic use; all copies share the same underlying state. The inner state is heap-allocated via Rc<RefCell<>> and tracked in a global registry to prevent premature deallocation. The Copy semantics are safe because only the pointer address is copied — the actual Rc reference is held by the registry for the lifetime of the program.

Implementations§

Source§

impl<T> Signal<T>
where T: Clone + PartialEq + 'static,

Implementation of reactive signal operations.

Source

pub fn create(value: T) -> Self

Creates a new Signal with the given initial value.

§Arguments
  • T - The initial value of the signal.
§Returns
  • Self - A handle to the newly created reactive signal.
Source

pub fn get(&self) -> T

Returns the current value of the signal.

§Returns
  • T - The current value of the signal.
Source

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

Attempts to return the current value of the signal without panicking.

§Returns
  • Some(T) - The current value if the borrow succeeds.
  • None - If the inner value is already mutably borrowed.
Source

pub fn subscribe<F>(&self, callback: F)
where F: FnMut() + 'static,

Subscribes a callback to be invoked when the signal changes.

§Arguments
  • FnMut() + 'static - The callback to invoke when the signal changes.
Source

pub fn replace_subscribe<F>(&self, callback: F)
where F: FnMut() + 'static,

Replaces all listeners with a single new callback.

Unlike subscribe, which appends a listener, this method clears any existing listeners first and then adds the new one.

§Arguments
  • FnMut() + 'static - The callback to invoke when the signal changes.
Source

pub fn clear_listeners(&self)

Removes all subscribed listeners from this signal and marks it as inactive.

Source

pub fn set(&self, value: T)

Sets the value of the signal and notifies listeners.

§Arguments
  • T - The new value to assign to the signal.
Source

pub fn set_silent(&self, value: T)

Sets the value of the signal and notifies listeners without scheduling a global DOM update dispatch.

§Arguments
  • T - The new value to assign to the signal.
Source

pub fn try_set(&self, value: T) -> bool

Attempts to set the value of the signal and notify listeners without panicking.

§Arguments
  • T - The new value to assign to the signal.
§Returns
  • bool - true if the value was successfully updated and listeners were notified, false if unchanged or inactive.
Source§

impl<T> Signal<T>
where T: Clone + PartialEq + 'static,

Source

pub fn get_mut_inner(&mut self) -> &mut usize

Source

pub fn get_mut__marker(&mut self) -> &mut PhantomData<fn() -> T>

Source§

impl<T> Signal<T>
where T: Clone + PartialEq + 'static,

Source

pub fn new(inner: usize, _marker: PhantomData<fn() -> T>) -> Self

Trait Implementations§

Source§

impl<T> Clone for Signal<T>
where T: Clone + PartialEq + 'static,

Clones the signal, sharing the same inner state.

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> Debug for Signal<T>
where T: Clone + PartialEq + 'static,

Source§

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

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

impl<T> Default for Signal<T>
where T: Clone + PartialEq + 'static + Default,

Source§

fn default() -> Signal<T>

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

impl<T> Deref for Signal<T>
where T: Clone + PartialEq + 'static,

Prevents direct dereference of a signal to enforce explicit API usage.

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<T> DerefMut for Signal<T>
where T: Clone + PartialEq + 'static,

Prevents direct mutable dereference of a signal to enforce explicit API usage.

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl<T> IntoNode for Signal<T>
where T: Clone + PartialEq + Display + 'static,

Converts a signal into a reactive text virtual node via IntoNode.

Source§

fn into_node(self) -> VirtualNode

Converts this signal into a reactive text virtual node.

§Returns
  • VirtualNode - A reactive text virtual node.
Source§

impl IntoReactiveString for Signal<String>

Converts a string signal into a reactive string by resolving its current value.

Source§

fn into_reactive_string(self) -> String

Resolves the current value of this signal.

§Returns
  • String - The current value of the signal.
Source§

impl IntoReactiveString for Signal<bool>

Converts a bool signal into a reactive string by resolving its current value.

Source§

fn into_reactive_string(self) -> String

Resolves the current value of this bool signal as a string.

§Returns
  • String - The current boolean value as "true" or "false".
Source§

impl IntoReactiveValue for Signal<String>

Converts a string signal into a reactive attribute value.

Source§

fn into_reactive_value(self) -> AttributeValue

Converts this string signal into an AttributeValue::Signal.

§Returns
  • AttributeValue - A signal-backed attribute value.
Source§

impl IntoReactiveValue for Signal<bool>

Converts a mutable bool signal into a reactive attribute value.

The signal is mapped to a Signal<String> that yields "true" or "false", enabling boolean attributes like checked to reactively update the DOM.

Source§

fn into_reactive_value(self) -> AttributeValue

Converts this bool signal into an AttributeValue via string mapping.

§Returns
  • AttributeValue - A signal-backed attribute value yielding "true" or "false".
Source§

impl<T> PartialEq for Signal<T>
where T: Clone + PartialEq + 'static + PartialEq,

Source§

fn eq(&self, other: &Signal<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T> Copy for Signal<T>
where T: Clone + PartialEq + 'static,

Copies the signal, sharing the same inner state.

Source§

impl<T> Eq for Signal<T>
where T: Clone + PartialEq + 'static + Eq,

Source§

impl<T> StructuralPartialEq for Signal<T>
where T: Clone + PartialEq + 'static,

Auto Trait Implementations§

§

impl<T> Freeze for Signal<T>

§

impl<T> RefUnwindSafe for Signal<T>

§

impl<T> Send for Signal<T>

§

impl<T> Sync for Signal<T>

§

impl<T> Unpin for Signal<T>

§

impl<T> UnsafeUnpin for Signal<T>

§

impl<T> UnwindSafe for Signal<T>

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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 = 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<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more