dioxus_signals/
props.rs

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