Skip to main content

dioxus_signals/
props.rs

1use crate::{ReadSignal, Signal};
2use dioxus_core::SuperFrom;
3
4#[doc(hidden)]
5pub struct ReadFromMarker<M>(std::marker::PhantomData<M>);
6
7impl<T, O, M> SuperFrom<T, ReadFromMarker<M>> for ReadSignal<O>
8where
9    O: SuperFrom<T, M> + 'static,
10    T: 'static,
11{
12    fn super_from(input: T) -> Self {
13        ReadSignal::new(Signal::new(O::super_from(input)))
14    }
15}
16
17#[test]
18#[allow(unused)]
19fn into_signal_compiles() {
20    use dioxus_core::SuperInto;
21    fn takes_signal_string<M>(_: impl SuperInto<ReadSignal<String>, M>) {}
22
23    fn takes_option_signal_string<M>(_: impl SuperInto<ReadSignal<Option<String>>, M>) {}
24
25    fn don_t_run() {
26        takes_signal_string("hello world");
27        takes_signal_string(Signal::new(String::from("hello world")));
28        takes_option_signal_string("hello world");
29    }
30}