pub trait Readable {
type Target: 'static + ?Sized;
type Storage: AnyStorage;
// Required methods
fn try_read_unchecked(
&self
) -> Result<<Self::Storage as AnyStorage>::Ref<'static, Self::Target>, BorrowError>;
fn peek_unchecked(
&self
) -> <Self::Storage as AnyStorage>::Ref<'static, Self::Target>;
// Provided methods
fn map<O>(
self,
f: impl Fn(&Self::Target) -> &O + 'static
) -> MappedSignal<O, Self::Storage>
where Self: Sized + Clone + 'static { ... }
fn read(&self) -> <Self::Storage as AnyStorage>::Ref<'_, Self::Target> { ... }
fn try_read(
&self
) -> Result<<Self::Storage as AnyStorage>::Ref<'_, Self::Target>, BorrowError> { ... }
fn read_unchecked(
&self
) -> <Self::Storage as AnyStorage>::Ref<'static, Self::Target> { ... }
fn peek(&self) -> <Self::Storage as AnyStorage>::Ref<'_, Self::Target> { ... }
fn cloned(&self) -> Self::Target
where Self::Target: Clone { ... }
fn with<O>(&self, f: impl FnOnce(&Self::Target) -> O) -> O { ... }
fn with_peek<O>(&self, f: impl FnOnce(&Self::Target) -> O) -> O { ... }
fn index<I>(
&self,
index: I
) -> <Self::Storage as AnyStorage>::Ref<'_, <Self::Target as Index<I>>::Output>
where Self::Target: Index<I> { ... }
}
Expand description
A trait for states that can be read from like crate::Signal
, crate::GlobalSignal
, or crate::ReadOnlySignal
. You may choose to accept this trait as a parameter instead of the concrete type to allow for more flexibility in your API. For example, instead of creating two functions, one that accepts a crate::Signal
and one that accepts a crate::GlobalSignal
, you can create one function that accepts a Readable
type.
Required Associated Types§
type Storage: AnyStorage
type Storage: AnyStorage
The type of the storage this readable uses.
Required Methods§
fn try_read_unchecked(
&self
) -> Result<<Self::Storage as AnyStorage>::Ref<'static, Self::Target>, BorrowError>
fn try_read_unchecked( &self ) -> Result<<Self::Storage as AnyStorage>::Ref<'static, Self::Target>, BorrowError>
Try to get a reference to the value without checking the lifetime. This will subscribe the current scope to the signal.
NOTE: This method is completely safe because borrow checking is done at runtime.
fn peek_unchecked(
&self
) -> <Self::Storage as AnyStorage>::Ref<'static, Self::Target>
fn peek_unchecked( &self ) -> <Self::Storage as AnyStorage>::Ref<'static, Self::Target>
Get the current value of the signal without checking the lifetime. Unlike read, this will not subscribe the current scope to the signal which can cause parts of your UI to not update.
If the signal has been dropped, this will panic.
NOTE: This method is completely safe because borrow checking is done at runtime.
Provided Methods§
fn map<O>(
self,
f: impl Fn(&Self::Target) -> &O + 'static
) -> MappedSignal<O, Self::Storage>
fn map<O>( self, f: impl Fn(&Self::Target) -> &O + 'static ) -> MappedSignal<O, Self::Storage>
Map the readable type to a new type.
fn read(&self) -> <Self::Storage as AnyStorage>::Ref<'_, Self::Target>
fn read(&self) -> <Self::Storage as AnyStorage>::Ref<'_, Self::Target>
Get the current value of the state. If this is a signal, this will subscribe the current scope to the signal. If the value has been dropped, this will panic. Calling this on a Signal is the same as using the signal() syntax to read and subscribe to its value
fn try_read(
&self
) -> Result<<Self::Storage as AnyStorage>::Ref<'_, Self::Target>, BorrowError>
fn try_read( &self ) -> Result<<Self::Storage as AnyStorage>::Ref<'_, Self::Target>, BorrowError>
Try to get the current value of the state. If this is a signal, this will subscribe the current scope to the signal.
fn read_unchecked(
&self
) -> <Self::Storage as AnyStorage>::Ref<'static, Self::Target>
fn read_unchecked( &self ) -> <Self::Storage as AnyStorage>::Ref<'static, Self::Target>
Get a reference to the value without checking the lifetime. This will subscribe the current scope to the signal.
NOTE: This method is completely safe because borrow checking is done at runtime.
fn peek(&self) -> <Self::Storage as AnyStorage>::Ref<'_, Self::Target>
fn peek(&self) -> <Self::Storage as AnyStorage>::Ref<'_, Self::Target>
Get the current value of the state without subscribing to updates. If the value has been dropped, this will panic.
fn cloned(&self) -> Self::Target
fn cloned(&self) -> Self::Target
Clone the inner value and return it. If the value has been dropped, this will panic.
fn with<O>(&self, f: impl FnOnce(&Self::Target) -> O) -> O
fn with<O>(&self, f: impl FnOnce(&Self::Target) -> O) -> O
Run a function with a reference to the value. If the value has been dropped, this will panic.