pub struct RxResult<T, E>(_)
where
T: MakeRx + 'static,
<T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static,
E: Clone + 'static;
Expand description
A wrapper for fallible reactive state.
This is intended for use with the suspense state feature and nested state.
Imagine you have a struct Song
that you derive ReactiveState
on, having
the album: Album
field use nested reactivity, since Album
has multiple
fields itself. However, for some reason, you’d like to make the album
field use #[rx(suspense = "your_handler_fn")]
. If your_handler_fn()
could lead to an error, then you have to be able to use the pattern
song.album.get()?.name.get()
, rather than just song.album.name.get()
.
The extra .get()?
is needed since the Album
is what is suspended state,
and it could be an error of some sort. What you need is a reactive Result
,
and this is that. Any type can be placed in this that implements MakeRx
,
Serialize
, and Deserialize
. No restrictions are placed on the error
type.
Note that this is intended for use with fallible, nested, suspended state, although it could be easily used in any case where you want to use reactive state that could be an error, conveniently enabling the pattern explained above.
If you want non-nested, fallible, suspended state, you can simply use
Result<T, E>
from the standard library.
Trait Implementations§
source§impl<T, E> Clone for RxResult<T, E>where
T: MakeRx + 'static + Clone,
<T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static,
E: Clone + 'static + Clone,
impl<T, E> Clone for RxResult<T, E>where T: MakeRx + 'static + Clone, <T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static, E: Clone + 'static + Clone,
source§impl<T, E> Debug for RxResult<T, E>where
T: MakeRx + 'static + Debug,
<T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static,
E: Clone + 'static + Debug,
impl<T, E> Debug for RxResult<T, E>where T: MakeRx + 'static + Debug, <T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static, E: Clone + 'static + Debug,
source§impl<'de, T, E> Deserialize<'de> for RxResult<T, E>where
T: MakeRx + 'static + Deserialize<'de>,
<T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static,
E: Clone + 'static + Deserialize<'de>,
impl<'de, T, E> Deserialize<'de> for RxResult<T, E>where T: MakeRx + 'static + Deserialize<'de>, <T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static, E: Clone + 'static + Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
source§impl<T, E> From<Result<T, E>> for RxResult<T, E>where
T: MakeRx + Serialize + DeserializeOwned + 'static,
<T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static,
E: Serialize + DeserializeOwned + Clone + 'static,
impl<T, E> From<Result<T, E>> for RxResult<T, E>where T: MakeRx + Serialize + DeserializeOwned + 'static, <T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static, E: Serialize + DeserializeOwned + Clone + 'static,
source§impl<T, E> MakeRx for RxResult<T, E>where
T: MakeRx + Serialize + DeserializeOwned + 'static,
<T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static,
E: Serialize + DeserializeOwned + Clone + 'static,
impl<T, E> MakeRx for RxResult<T, E>where T: MakeRx + Serialize + DeserializeOwned + 'static, <T as MakeRx>::Rx: MakeUnrx<Unrx = T> + Freeze + Clone + 'static, E: Serialize + DeserializeOwned + Clone + 'static,
§type Rx = RxResultRx<T, E>
type Rx = RxResultRx<T, E>
source§const HSR_IGNORE: bool = false
const HSR_IGNORE: bool = false
true
to have this type be ignored by the hot
state reloading system, which can be useful when working with state
that you will regularly update in development. Read more