pub struct ArcSignal<T, S = SyncStorage>where
T: 'static,
S: Storage<T>,{ /* private fields */ }Expand description
A wrapper for any kind of reference-counted reactive signal:
an ArcReadSignal, ArcMemo, ArcRwSignal, or derived signal closure,
or a plain value of the same type
This allows you to create APIs that take T or any reactive value that returns T
as an argument, rather than adding a generic F: Fn() -> T.
Values can be accessed with the same function call, read(), with(), and get()
APIs as other signals.
§Important Notes about Derived Signals
Signal::derive() is simply a way to box and type-erase a “derived signal,” which
is a plain closure that accesses one or more signals. It does not cache the value
of that computation. Accessing the value of a Signal<_> that is created using Signal::derive()
will run the closure again every time you call .read(), .with(), or .get().
If you want the closure to run the minimal number of times necessary to update its state,
and then to cache its value, you should use a Memo (and convert it into a Signal<_>)
rather than using Signal::derive().
Note that for many computations, it is nevertheless less expensive to use a derived signal than to create a separate memo and to cache the value: creating a new reactive node and taking the lock on that cached value whenever you access the signal is more expensive than simply re-running the calculation in many cases.
Implementations§
Source§impl<T> ArcSignal<T>where
SyncStorage: Storage<T>,
impl<T> ArcSignal<T>where
SyncStorage: Storage<T>,
Sourcepub fn derive(
derived_signal: impl Fn() -> T + Send + Sync + 'static,
) -> ArcSignal<T>
pub fn derive( derived_signal: impl Fn() -> T + Send + Sync + 'static, ) -> ArcSignal<T>
Wraps a derived signal, i.e., any computation that accesses one or more reactive signals.
let (count, set_count) = arc_signal(2);
let double_count = ArcSignal::derive({
let count = count.clone();
move || count.get() * 2
});
// this function takes any kind of wrapped signal
fn above_3(arg: &ArcSignal<i32>) -> bool {
arg.get() > 3
}
assert_eq!(above_3(&count.into()), false);
assert_eq!(above_3(&double_count), true);Sourcepub fn stored(value: T) -> ArcSignal<T>
pub fn stored(value: T) -> ArcSignal<T>
Moves a static, nonreactive value into a signal, backed by ArcStoredValue.
Source§impl<T> ArcSignal<T, LocalStorage>where
T: 'static,
impl<T> ArcSignal<T, LocalStorage>where
T: 'static,
Sourcepub fn derive_local(
derived_signal: impl Fn() -> T + 'static,
) -> ArcSignal<T, LocalStorage>
pub fn derive_local( derived_signal: impl Fn() -> T + 'static, ) -> ArcSignal<T, LocalStorage>
Wraps a derived signal. Works like Signal::derive but uses LocalStorage.
Sourcepub fn stored_local(value: T) -> ArcSignal<T, LocalStorage>
pub fn stored_local(value: T) -> ArcSignal<T, LocalStorage>
Moves a static, nonreactive value into a signal, backed by ArcStoredValue.
Works like Signal::stored but uses LocalStorage.
Trait Implementations§
Source§impl<V> AddAnyAttr for ArcSignal<V>
impl<V> AddAnyAttr for ArcSignal<V>
Source§impl<V> AttributeValue for ArcSignal<V>where
V: AttributeValue + Send + Sync + Clone + 'static,
<V as AttributeValue>::State: 'static,
ArcSignal<V>: Get<Value = V>,
impl<V> AttributeValue for ArcSignal<V>where
V: AttributeValue + Send + Sync + Clone + 'static,
<V as AttributeValue>::State: 'static,
ArcSignal<V>: Get<Value = V>,
Source§type AsyncOutput = ArcSignal<V>
type AsyncOutput = ArcSignal<V>
Source§type State = RenderEffect<<V as AttributeValue>::State>
type State = RenderEffect<<V as AttributeValue>::State>
Source§type Cloneable = ArcSignal<V>
type Cloneable = ArcSignal<V>
FnMut() continues mutating the same
closure), but making a String cloneable does not necessarily need to make it an
Arc<str>, as two different clones of a String will still have the same value.Source§type CloneableOwned = ArcSignal<V>
type CloneableOwned = ArcSignal<V>
'static. This is used for spreading across types when the
spreadable attribute needs to be owned. In some cases (&'a str to Arc<str>, etc.) the owned
cloneable type has worse performance than the cloneable type, so they are separate.Source§fn to_template(_key: &str, _buf: &mut String)
fn to_template(_key: &str, _buf: &mut String)
<template>.Source§fn hydrate<const FROM_SERVER: bool>(
self,
key: &str,
el: &Element,
) -> <ArcSignal<V> as AttributeValue>::State
fn hydrate<const FROM_SERVER: bool>( self, key: &str, el: &Element, ) -> <ArcSignal<V> as AttributeValue>::State
<template>.Source§fn build(
self,
el: &Element,
key: &str,
) -> <ArcSignal<V> as AttributeValue>::State
fn build( self, el: &Element, key: &str, ) -> <ArcSignal<V> as AttributeValue>::State
Source§fn rebuild(self, key: &str, state: &mut <ArcSignal<V> as AttributeValue>::State)
fn rebuild(self, key: &str, state: &mut <ArcSignal<V> as AttributeValue>::State)
Source§fn into_cloneable(self) -> <ArcSignal<V> as AttributeValue>::Cloneable
fn into_cloneable(self) -> <ArcSignal<V> as AttributeValue>::Cloneable
Source§fn into_cloneable_owned(
self,
) -> <ArcSignal<V> as AttributeValue>::CloneableOwned
fn into_cloneable_owned( self, ) -> <ArcSignal<V> as AttributeValue>::CloneableOwned
'static.Source§fn dry_resolve(&mut self)
fn dry_resolve(&mut self)
Source§async fn resolve(self) -> <ArcSignal<V> as AttributeValue>::AsyncOutput
async fn resolve(self) -> <ArcSignal<V> as AttributeValue>::AsyncOutput
Source§impl<T, S> DefinedAt for ArcSignal<T, S>where
S: Storage<T>,
impl<T, S> DefinedAt for ArcSignal<T, S>where
S: Storage<T>,
Source§fn defined_at(&self) -> Option<&'static Location<'static>>
fn defined_at(&self) -> Option<&'static Location<'static>>
None in
release mode.Source§impl<T> From<ArcReadSignal<T>> for ArcSignal<T>
impl<T> From<ArcReadSignal<T>> for ArcSignal<T>
Source§fn from(value: ArcReadSignal<T>) -> ArcSignal<T>
fn from(value: ArcReadSignal<T>) -> ArcSignal<T>
Source§impl<T> From<ArcRwSignal<T>> for ArcSignal<T>
impl<T> From<ArcRwSignal<T>> for ArcSignal<T>
Source§fn from(value: ArcRwSignal<T>) -> ArcSignal<T>
fn from(value: ArcRwSignal<T>) -> ArcSignal<T>
Source§impl<T, S> From<ReadSignal<T, S>> for ArcSignal<T, S>
impl<T, S> From<ReadSignal<T, S>> for ArcSignal<T, S>
Source§fn from(value: ReadSignal<T, S>) -> ArcSignal<T, S>
fn from(value: ReadSignal<T, S>) -> ArcSignal<T, S>
Source§impl<T> FromLocal<ArcSignal<T, LocalStorage>> for Signal<T, LocalStorage>where
T: 'static,
impl<T> FromLocal<ArcSignal<T, LocalStorage>> for Signal<T, LocalStorage>where
T: 'static,
Source§fn from_local(value: ArcSignal<T, LocalStorage>) -> Signal<T, LocalStorage>
fn from_local(value: ArcSignal<T, LocalStorage>) -> Signal<T, LocalStorage>
Source§impl<V> InnerHtmlValue for ArcSignal<V>where
V: InnerHtmlValue + Clone + Send + Sync + 'static,
<V as InnerHtmlValue>::State: 'static,
ArcSignal<V>: Get<Value = V>,
impl<V> InnerHtmlValue for ArcSignal<V>where
V: InnerHtmlValue + Clone + Send + Sync + 'static,
<V as InnerHtmlValue>::State: 'static,
ArcSignal<V>: Get<Value = V>,
Source§type AsyncOutput = ArcSignal<V>
type AsyncOutput = ArcSignal<V>
Source§type State = RenderEffect<<V as InnerHtmlValue>::State>
type State = RenderEffect<<V as InnerHtmlValue>::State>
Source§type CloneableOwned = ArcSignal<V>
type CloneableOwned = ArcSignal<V>
'static.Source§fn to_template(_buf: &mut String)
fn to_template(_buf: &mut String)
<template>.Source§fn hydrate<const FROM_SERVER: bool>(
self,
el: &Element,
) -> <ArcSignal<V> as InnerHtmlValue>::State
fn hydrate<const FROM_SERVER: bool>( self, el: &Element, ) -> <ArcSignal<V> as InnerHtmlValue>::State
<template>.Source§fn build(self, el: &Element) -> <ArcSignal<V> as InnerHtmlValue>::State
fn build(self, el: &Element) -> <ArcSignal<V> as InnerHtmlValue>::State
Source§fn into_cloneable(self) -> <ArcSignal<V> as InnerHtmlValue>::Cloneable
fn into_cloneable(self) -> <ArcSignal<V> as InnerHtmlValue>::Cloneable
Source§fn into_cloneable_owned(
self,
) -> <ArcSignal<V> as InnerHtmlValue>::CloneableOwned
fn into_cloneable_owned( self, ) -> <ArcSignal<V> as InnerHtmlValue>::CloneableOwned
Source§fn dry_resolve(&mut self)
fn dry_resolve(&mut self)
Source§async fn resolve(self) -> <ArcSignal<V> as InnerHtmlValue>::AsyncOutput
async fn resolve(self) -> <ArcSignal<V> as InnerHtmlValue>::AsyncOutput
Source§impl<V> IntoClass for ArcSignal<V>
impl<V> IntoClass for ArcSignal<V>
Source§type AsyncOutput = ArcSignal<V>
type AsyncOutput = ArcSignal<V>
Source§type State = RenderEffect<<V as IntoClass>::State>
type State = RenderEffect<<V as IntoClass>::State>
Source§type CloneableOwned = ArcSignal<V>
type CloneableOwned = ArcSignal<V>
'static.Source§fn hydrate<const FROM_SERVER: bool>(
self,
el: &Element,
) -> <ArcSignal<V> as IntoClass>::State
fn hydrate<const FROM_SERVER: bool>( self, el: &Element, ) -> <ArcSignal<V> as IntoClass>::State
<template>.Source§fn build(self, el: &Element) -> <ArcSignal<V> as IntoClass>::State
fn build(self, el: &Element) -> <ArcSignal<V> as IntoClass>::State
Source§fn into_cloneable(self) -> <ArcSignal<V> as IntoClass>::Cloneable
fn into_cloneable(self) -> <ArcSignal<V> as IntoClass>::Cloneable
Source§fn into_cloneable_owned(self) -> <ArcSignal<V> as IntoClass>::CloneableOwned
fn into_cloneable_owned(self) -> <ArcSignal<V> as IntoClass>::CloneableOwned
Source§fn dry_resolve(&mut self)
fn dry_resolve(&mut self)
Source§async fn resolve(self) -> <ArcSignal<V> as IntoClass>::AsyncOutput
async fn resolve(self) -> <ArcSignal<V> as IntoClass>::AsyncOutput
Source§fn reset(state: &mut <ArcSignal<V> as IntoClass>::State)
fn reset(state: &mut <ArcSignal<V> as IntoClass>::State)
Source§const MIN_LENGTH: usize = _
const MIN_LENGTH: usize = _
Source§fn to_template(class: &mut String)
fn to_template(class: &mut String)
<template>.Source§impl<V> IntoProperty for ArcSignal<V>where
V: IntoProperty + Clone + Send + Sync + 'static,
<V as IntoProperty>::State: 'static,
ArcSignal<V>: Get<Value = V>,
impl<V> IntoProperty for ArcSignal<V>where
V: IntoProperty + Clone + Send + Sync + 'static,
<V as IntoProperty>::State: 'static,
ArcSignal<V>: Get<Value = V>,
Source§type State = RenderEffect<<V as IntoProperty>::State>
type State = RenderEffect<<V as IntoProperty>::State>
Source§type CloneableOwned = ArcSignal<V>
type CloneableOwned = ArcSignal<V>
'static.Source§fn hydrate<const FROM_SERVER: bool>(
self,
el: &Element,
key: &str,
) -> <ArcSignal<V> as IntoProperty>::State
fn hydrate<const FROM_SERVER: bool>( self, el: &Element, key: &str, ) -> <ArcSignal<V> as IntoProperty>::State
Source§fn build(self, el: &Element, key: &str) -> <ArcSignal<V> as IntoProperty>::State
fn build(self, el: &Element, key: &str) -> <ArcSignal<V> as IntoProperty>::State
Source§fn rebuild(self, state: &mut <ArcSignal<V> as IntoProperty>::State, key: &str)
fn rebuild(self, state: &mut <ArcSignal<V> as IntoProperty>::State, key: &str)
Source§fn into_cloneable(self) -> <ArcSignal<V> as IntoProperty>::Cloneable
fn into_cloneable(self) -> <ArcSignal<V> as IntoProperty>::Cloneable
Source§fn into_cloneable_owned(self) -> <ArcSignal<V> as IntoProperty>::CloneableOwned
fn into_cloneable_owned(self) -> <ArcSignal<V> as IntoProperty>::CloneableOwned
Source§impl<V> IntoStyle for ArcSignal<V>
impl<V> IntoStyle for ArcSignal<V>
Source§type AsyncOutput = ArcSignal<V>
type AsyncOutput = ArcSignal<V>
Source§type State = RenderEffect<<V as IntoStyle>::State>
type State = RenderEffect<<V as IntoStyle>::State>
Source§type CloneableOwned = ArcSignal<V>
type CloneableOwned = ArcSignal<V>
'static.Source§fn hydrate<const FROM_SERVER: bool>(
self,
el: &Element,
) -> <ArcSignal<V> as IntoStyle>::State
fn hydrate<const FROM_SERVER: bool>( self, el: &Element, ) -> <ArcSignal<V> as IntoStyle>::State
<template>.Source§fn build(self, el: &Element) -> <ArcSignal<V> as IntoStyle>::State
fn build(self, el: &Element) -> <ArcSignal<V> as IntoStyle>::State
Source§fn into_cloneable(self) -> <ArcSignal<V> as IntoStyle>::Cloneable
fn into_cloneable(self) -> <ArcSignal<V> as IntoStyle>::Cloneable
Source§fn into_cloneable_owned(self) -> <ArcSignal<V> as IntoStyle>::CloneableOwned
fn into_cloneable_owned(self) -> <ArcSignal<V> as IntoStyle>::CloneableOwned
Source§fn dry_resolve(&mut self)
fn dry_resolve(&mut self)
Source§impl<V> IntoStyleValue for ArcSignal<V>
impl<V> IntoStyleValue for ArcSignal<V>
Source§type AsyncOutput = ArcSignal<V>
type AsyncOutput = ArcSignal<V>
Source§type State = (Arc<str>, RenderEffect<<V as IntoStyleValue>::State>)
type State = (Arc<str>, RenderEffect<<V as IntoStyleValue>::State>)
Source§type CloneableOwned = ArcSignal<V>
type CloneableOwned = ArcSignal<V>
'static.Source§fn build(
self,
style: &CssStyleDeclaration,
name: &str,
) -> <ArcSignal<V> as IntoStyleValue>::State
fn build( self, style: &CssStyleDeclaration, name: &str, ) -> <ArcSignal<V> as IntoStyleValue>::State
Source§fn rebuild(
self,
style: &CssStyleDeclaration,
name: &str,
state: &mut <ArcSignal<V> as IntoStyleValue>::State,
)
fn rebuild( self, style: &CssStyleDeclaration, name: &str, state: &mut <ArcSignal<V> as IntoStyleValue>::State, )
Source§fn hydrate(
self,
style: &CssStyleDeclaration,
name: &str,
) -> <ArcSignal<V> as IntoStyleValue>::State
fn hydrate( self, style: &CssStyleDeclaration, name: &str, ) -> <ArcSignal<V> as IntoStyleValue>::State
<template>.Source§fn into_cloneable(self) -> <ArcSignal<V> as IntoStyleValue>::Cloneable
fn into_cloneable(self) -> <ArcSignal<V> as IntoStyleValue>::Cloneable
Source§fn into_cloneable_owned(
self,
) -> <ArcSignal<V> as IntoStyleValue>::CloneableOwned
fn into_cloneable_owned( self, ) -> <ArcSignal<V> as IntoStyleValue>::CloneableOwned
Source§fn dry_resolve(&mut self)
fn dry_resolve(&mut self)
Source§async fn resolve(self) -> <ArcSignal<V> as IntoStyleValue>::AsyncOutput
async fn resolve(self) -> <ArcSignal<V> as IntoStyleValue>::AsyncOutput
Source§impl<T, S> ReadUntracked for ArcSignal<T, S>where
S: Storage<T>,
impl<T, S> ReadUntracked for ArcSignal<T, S>where
S: Storage<T>,
Source§fn custom_try_read(
&self,
) -> Option<Option<<ArcSignal<T, S> as ReadUntracked>::Value>>
fn custom_try_read( &self, ) -> Option<Option<<ArcSignal<T, S> as ReadUntracked>::Value>>
Overriding the default auto implemented Read::try_read to combine read and track,
to avoid 2 clones and just have 1 in the SignalTypes::DerivedSignal.
Source§type Value = ReadGuard<T, SignalReadGuard<T, S>>
type Value = ReadGuard<T, SignalReadGuard<T, S>>
Source§fn try_read_untracked(
&self,
) -> Option<<ArcSignal<T, S> as ReadUntracked>::Value>
fn try_read_untracked( &self, ) -> Option<<ArcSignal<T, S> as ReadUntracked>::Value>
None if the signal has already been disposed.Source§fn read_untracked(&self) -> Self::Value
fn read_untracked(&self) -> Self::Value
Source§impl<V> Render for ArcSignal<V>
impl<V> Render for ArcSignal<V>
Source§impl<V> RenderHtml for ArcSignal<V>
impl<V> RenderHtml for ArcSignal<V>
Source§const MIN_LENGTH: usize = 0
const MIN_LENGTH: usize = 0
Source§type AsyncOutput = ArcSignal<V>
type AsyncOutput = ArcSignal<V>
Source§fn dry_resolve(&mut self)
fn dry_resolve(&mut self)
Source§async fn resolve(self) -> <ArcSignal<V> as RenderHtml>::AsyncOutput
async fn resolve(self) -> <ArcSignal<V> as RenderHtml>::AsyncOutput
Source§fn html_len(&self) -> usize
fn html_len(&self) -> usize
Source§fn to_html_with_buf(
self,
buf: &mut String,
position: &mut Position,
escape: bool,
mark_branches: bool,
extra_attrs: Vec<AnyAttribute>,
)
fn to_html_with_buf( self, buf: &mut String, position: &mut Position, escape: bool, mark_branches: bool, extra_attrs: Vec<AnyAttribute>, )
Source§fn to_html_async_with_buf<const OUT_OF_ORDER: bool>(
self,
buf: &mut StreamBuilder,
position: &mut Position,
escape: bool,
mark_branches: bool,
extra_attrs: Vec<AnyAttribute>,
)
fn to_html_async_with_buf<const OUT_OF_ORDER: bool>( self, buf: &mut StreamBuilder, position: &mut Position, escape: bool, mark_branches: bool, extra_attrs: Vec<AnyAttribute>, )
Source§fn hydrate<const FROM_SERVER: bool>(
self,
cursor: &Cursor,
position: &PositionState,
) -> <ArcSignal<V> as Render>::State
fn hydrate<const FROM_SERVER: bool>( self, cursor: &Cursor, position: &PositionState, ) -> <ArcSignal<V> as Render>::State
Source§fn into_owned(self) -> <ArcSignal<V> as RenderHtml>::Owned
fn into_owned(self) -> <ArcSignal<V> as RenderHtml>::Owned
'static.Source§const EXISTS: bool = true
const EXISTS: bool = true
Source§fn to_html_branching(self) -> Stringwhere
Self: Sized,
fn to_html_branching(self) -> Stringwhere
Self: Sized,
Source§fn to_html_stream_in_order(self) -> StreamBuilderwhere
Self: Sized,
fn to_html_stream_in_order(self) -> StreamBuilderwhere
Self: Sized,
Source§fn to_html_stream_in_order_branching(self) -> StreamBuilderwhere
Self: Sized,
fn to_html_stream_in_order_branching(self) -> StreamBuilderwhere
Self: Sized,
Source§fn to_html_stream_out_of_order(self) -> StreamBuilderwhere
Self: Sized,
fn to_html_stream_out_of_order(self) -> StreamBuilderwhere
Self: Sized,
Source§fn to_html_stream_out_of_order_branching(self) -> StreamBuilderwhere
Self: Sized,
fn to_html_stream_out_of_order_branching(self) -> StreamBuilderwhere
Self: Sized,
Source§fn hydrate_async(
self,
cursor: &Cursor,
position: &PositionState,
) -> impl Future<Output = Self::State>
fn hydrate_async( self, cursor: &Cursor, position: &PositionState, ) -> impl Future<Output = Self::State>
Source§fn hydrate_from<const FROM_SERVER: bool>(self, el: &Element) -> Self::Statewhere
Self: Sized,
fn hydrate_from<const FROM_SERVER: bool>(self, el: &Element) -> Self::Statewhere
Self: Sized,
RenderHtml::hydrate, beginning at the given element.Source§fn hydrate_from_position<const FROM_SERVER: bool>(
self,
el: &Element,
position: Position,
) -> Self::Statewhere
Self: Sized,
fn hydrate_from_position<const FROM_SERVER: bool>(
self,
el: &Element,
position: Position,
) -> Self::Statewhere
Self: Sized,
RenderHtml::hydrate, beginning at the given element and position.impl<T, S> Eq for ArcSignal<T, S>where
S: Storage<T>,
Auto Trait Implementations§
impl<T, S> Freeze for ArcSignal<T, S>
impl<T, S = SyncStorage> !RefUnwindSafe for ArcSignal<T, S>
impl<T, S> Send for ArcSignal<T, S>
impl<T, S> Sync for ArcSignal<T, S>
impl<T, S> Unpin for ArcSignal<T, S>
impl<T, S = SyncStorage> !UnwindSafe for ArcSignal<T, S>
Blanket Implementations§
Source§impl<V, Key, Sig, T> BindAttribute<Key, Sig, T> for Vwhere
V: AddAnyAttr,
Key: AttributeKey,
Sig: IntoSplitSignal<Value = T>,
T: FromEventTarget + AttributeValue + PartialEq + Sync + 'static,
Signal<BoolOrT<T>>: IntoProperty,
<Sig as IntoSplitSignal>::Read: Get<Value = T> + Send + Sync + Clone + 'static,
<Sig as IntoSplitSignal>::Write: Send + Clone + 'static,
Element: GetValue<T>,
impl<V, Key, Sig, T> BindAttribute<Key, Sig, T> for Vwhere
V: AddAnyAttr,
Key: AttributeKey,
Sig: IntoSplitSignal<Value = T>,
T: FromEventTarget + AttributeValue + PartialEq + Sync + 'static,
Signal<BoolOrT<T>>: IntoProperty,
<Sig as IntoSplitSignal>::Read: Get<Value = T> + Send + Sync + Clone + 'static,
<Sig as IntoSplitSignal>::Write: Send + Clone + 'static,
Element: GetValue<T>,
Source§type Output = <V as AddAnyAttr>::Output<Bind<Key, T, <Sig as IntoSplitSignal>::Read, <Sig as IntoSplitSignal>::Write>>
type Output = <V as AddAnyAttr>::Output<Bind<Key, T, <Sig as IntoSplitSignal>::Read, <Sig as IntoSplitSignal>::Write>>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, K, V> CustomAttribute<K, V> for T
impl<T, K, V> CustomAttribute<K, V> for T
Source§fn attr(self, key: K, value: V) -> Self::Output<CustomAttr<K, V>>
fn attr(self, key: K, value: V) -> Self::Output<CustomAttr<K, V>>
Source§impl<V, T, P, D> DirectiveAttribute<T, P, D> for V
impl<V, T, P, D> DirectiveAttribute<T, P, D> for V
Source§type Output = <V as AddAnyAttr>::Output<Directive<T, D, P>>
type Output = <V as AddAnyAttr>::Output<Directive<T, D, P>>
Source§fn directive(
self,
handler: D,
param: P,
) -> <V as DirectiveAttribute<T, P, D>>::Output
fn directive( self, handler: D, param: P, ) -> <V as DirectiveAttribute<T, P, D>>::Output
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
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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
Source§fn from_stream_unsync(stream: impl Stream<Item = T> + 'static) -> S
fn from_stream_unsync(stream: impl Stream<Item = T> + 'static) -> S
Source§impl<T> IntoAny for Twhere
T: Send + RenderHtml,
impl<T> IntoAny for Twhere
T: Send + RenderHtml,
Source§impl<T> IntoAttributeValue for Twhere
T: AttributeValue,
impl<T> IntoAttributeValue for Twhere
T: AttributeValue,
Source§fn into_attribute_value(self) -> <T as IntoAttributeValue>::Output
fn into_attribute_value(self) -> <T as IntoAttributeValue>::Output
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>
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>
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 moreSource§impl<T> IntoMaybeErased for Twhere
T: RenderHtml,
impl<T> IntoMaybeErased for Twhere
T: RenderHtml,
Source§fn into_maybe_erased(self) -> <T as IntoMaybeErased>::Output
fn into_maybe_erased(self) -> <T as IntoMaybeErased>::Output
Source§impl<T, S> IntoOptionGetter<T, SignalMarker> for S
impl<T, S> IntoOptionGetter<T, SignalMarker> for S
Source§fn into_option_getter(self) -> OptionGetter<T>
fn into_option_getter(self) -> OptionGetter<T>
OptionGetter.Source§impl<T> IntoRender for Twhere
T: Render,
impl<T> IntoRender for Twhere
T: Render,
Source§fn into_render(self) -> <T as IntoRender>::Output
fn into_render(self) -> <T as IntoRender>::Output
Source§impl<T> Read for Twhere
T: Track + ReadUntracked,
impl<T> Read for Twhere
T: Track + ReadUntracked,
Source§impl<T> SerializableKey for T
impl<T> SerializableKey for T
Source§impl<T> StorageAccess<T> for T
impl<T> StorageAccess<T> for T
Source§fn as_borrowed(&self) -> &T
fn as_borrowed(&self) -> &T
Source§fn into_taken(self) -> T
fn into_taken(self) -> T
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
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
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>
None if the signal has already been disposed.