use leptos::prelude::*; use std::ops::Deref; pub struct OptionalMaybeSignal(MaybeSignal>); impl Default for OptionalMaybeSignal { fn default() -> Self { Self(MaybeSignal::Static(None)) } } impl Copy for OptionalMaybeSignal {} impl Clone for OptionalMaybeSignal { fn clone(&self) -> Self { Self(self.0.clone()) } } impl Deref for OptionalMaybeSignal { type Target = MaybeSignal>; fn deref(&self) -> &Self::Target { &self.0 } } impl From for OptionalMaybeSignal { fn from(value: T) -> Self { Self(MaybeSignal::Static(Some(value))) } } impl From> for OptionalMaybeSignal { fn from(value: Option) -> Self { Self(MaybeSignal::Static(value)) } } impl From>> for OptionalMaybeSignal { fn from(value: ReadSignal>) -> Self { Self(MaybeSignal::Dynamic(value.into())) } } impl From>> for OptionalMaybeSignal { fn from(value: RwSignal>) -> Self { Self(MaybeSignal::Dynamic(value.into())) } } impl From>> for OptionalMaybeSignal { fn from(value: Memo>) -> Self { Self(MaybeSignal::Dynamic(value.into())) } } impl From>> for OptionalMaybeSignal { fn from(value: Signal>) -> Self { Self(MaybeSignal::Dynamic(value)) } } impl From>> for OptionalMaybeSignal { fn from(value: MaybeSignal>) -> Self { Self(value) } } // TODO // #[cfg(test)] // mod test { // use super::OptionalMaybeSignal; // use leptos::{create_runtime, MaybeSignal}; // #[test] // fn into() { // let runtime = create_runtime(); // let _: MaybeSignal = 12.into(); // let _: OptionalMaybeSignal = Some(12).into(); // let _: OptionalMaybeSignal = MaybeSignal::Static(Some(12)).into(); // runtime.dispose(); // } // }