Skip to main content

Signal

Struct Signal 

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

A piece of state that lives in the browser.

A signal is created with signal during a server render and read or written in runtime expressions, where it is reactive: an expression re-runs in the browser whenever a signal it read changes. A signal is cheap to clone, and every clone is the same signal: runtime expressions clone the signals they capture, so any number of them can capture one, a component takes one as a &Signal<T> prop, and a shard takes one as a Signal<T> parameter passed as $(signal).

A signal can also be read on the server, outside any runtime expression. get and read are tracked reads: they make the body’s content depend on the signal, so that a change re-runs the page, or the innermost shard enclosing the read, with the signal’s current value. get_untracked and read_untracked read the value without that dependency. Every value read on the server is untrusted user input, chosen by the client like a shard argument.

Implementations§

Source§

impl<T> Signal<T>

Source

pub fn read(&self) -> &T

Borrows the current value, tracking the signal as a dependency of the body reading it.

The body’s content is marked as depending on the signal, so the browser runtime re-runs the page, or the innermost shard enclosing the read, when the signal changes. Reading the same signal any number of times in one body marks its content once.

§Panics

Panics when called outside a page, layout, component, or shard body, like signal.

Source

pub fn read_untracked(&self) -> &T

Borrows the current value without tracking the signal.

A change to the signal does not re-run the body that read it this way. It can be called anywhere, not just inside a body.

Source§

impl<T> Signal<T>
where T: Clone,

Source

pub fn get(&self) -> T

Clones the current value, tracking the signal as a dependency of the body reading it.

This is read for a value the body wants to own; the same tracking rules apply.

§Panics

Panics when called outside a page, layout, component, or shard body, like signal.

Source

pub fn get_untracked(&self) -> T

Clones the current value without tracking the signal.

This is read_untracked for a value the body wants to own.

Trait Implementations§

Source§

impl<T> Clone for Signal<T>

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> Debug for Signal<T>

Source§

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

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

impl<T> Surrogated for Signal<T>

Source§

impl<'__lifetime, T> Surrogated for &'__lifetime Signal<T>

Source§

type Surrogate = &'__lifetime SignalSurrogate<T>

Source§

fn into_surrogate(self) -> Self::Surrogate

Source§

impl<'__lifetime, T> Surrogated for &'__lifetime mut Signal<T>

Source§

type Surrogate = &'__lifetime mut SignalSurrogate<T>

Source§

fn into_surrogate(self) -> Self::Surrogate

Auto Trait Implementations§

§

impl<T> Freeze for Signal<T>
where Arc<T>: Freeze,

§

impl<T> RefUnwindSafe for Signal<T>
where Arc<T>: RefUnwindSafe,

§

impl<T> Send for Signal<T>
where Arc<T>: Send,

§

impl<T> Sync for Signal<T>
where Arc<T>: Sync,

§

impl<T> Unpin for Signal<T>
where Arc<T>: Unpin,

§

impl<T> UnsafeUnpin for Signal<T>
where Arc<T>: UnsafeUnpin,

§

impl<T> UnwindSafe for Signal<T>
where Arc<T>: UnwindSafe,

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> CloneAny for T
where T: Any + Clone,

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<T> SignalValue for T

Source§

type Surrogate<'a> = <&'a T as Surrogated>::Surrogate where T: 'a

The serializable surrogate of a borrowed value.
Source§

fn surrogate(&self) -> <T as SignalValue>::Surrogate<'_>

Borrows the value as its surrogate.
Source§

fn from_value(value: &Value) -> Option<T>

Reads a value back from the surrogate a client sent, or None if the surrogate does not fit this type.
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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.