only implement T -> Readonlysignal
This commit is contained in:
1 parent
1c67585ba2
commit
1f88103dca
4 files changed
+26
-15
No files matched your search
@@ -1,28 +1,28 @@
|
||||
use crate::Signal;
|
||||
use crate::{ReadOnlySignal, Signal};
|
||||
use dioxus_core::prelude::*;
|
||||
|
||||
#[doc(hidden)]
|
||||
pub struct SignalFromMarker<M>(std::marker::PhantomData<M>);
|
||||
|
||||
impl<T, O, M> SuperFrom<T, SignalFromMarker<M>> for Signal<O>
|
||||
impl<T, O, M> SuperFrom<T, SignalFromMarker<M>> for ReadOnlySignal<O>
|
||||
where
|
||||
O: SuperFrom<T, M>,
|
||||
{
|
||||
fn super_from(input: T) -> Self {
|
||||
Signal::new(O::super_from(input))
|
||||
ReadOnlySignal::new(Signal::new(O::super_from(input)))
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[allow(unused)]
|
||||
fn into_signal_compiles() {
|
||||
fn takes_signal_string<M>(_: impl SuperInto<Signal<String>, M>) {}
|
||||
fn takes_signal_string<M>(_: impl SuperInto<ReadOnlySignal<String>, M>) {}
|
||||
|
||||
fn takes_option_signal_string<M>(_: impl SuperInto<Signal<Option<String>>, M>) {}
|
||||
fn takes_option_signal_string<M>(_: impl SuperInto<ReadOnlySignal<Option<String>>, M>) {}
|
||||
|
||||
fn don_t_run() {
|
||||
takes_signal_string("hello world");
|
||||
takes_signal_string(Signal::new(String::from("hello world")));
|
||||
takes_signal_string(ReadOnlySignal::new(String::from("hello world")));
|
||||
takes_option_signal_string("hello world");
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,19 @@ impl<T: 'static, S: Storage<SignalData<T>>> ReadOnlySignal<T, S> {
|
||||
pub fn id(&self) -> generational_box::GenerationalBoxId {
|
||||
self.inner.id()
|
||||
}
|
||||
|
||||
#[doc(hidden)]
|
||||
/// This should only be used by the `rsx!` macro.
|
||||
pub fn __set(&mut self, value: T) {
|
||||
use crate::write::Writable;
|
||||
self.inner.set(value);
|
||||
}
|
||||
|
||||
#[doc(hidden)]
|
||||
/// This should only be used by the `rsx!` macro.
|
||||
pub fn __take(&self) -> T {
|
||||
self.inner.take()
|
||||
}
|
||||
}
|
||||
|
||||
impl<T, S: Storage<SignalData<T>>> Readable<T> for ReadOnlySignal<T, S> {
|
||||
|
||||
Reference in new issue
Block a user