diff --git a/emitter-and-signal/src/lib.rs b/emitter-and-signal/src/lib.rs index ff38fea..cee7b85 100644 --- a/emitter-and-signal/src/lib.rs +++ b/emitter-and-signal/src/lib.rs @@ -1,9 +1,9 @@ use snafu::Snafu; pub mod emitter; -pub mod emitter_ext; +mod emitter_ext; pub mod signal; -pub mod signal_ext; +mod signal_ext; pub use emitter::Emitter; pub use emitter_ext::EmitterExt; diff --git a/emitter-and-signal/src/signal_ext.rs b/emitter-and-signal/src/signal_ext.rs index e873e7f..5db9b74 100644 --- a/emitter-and-signal/src/signal_ext.rs +++ b/emitter-and-signal/src/signal_ext.rs @@ -1,30 +1,24 @@ use std::future::Future; use ext_trait::extension; -use snafu::{ResultExt, Snafu}; use tokio::select; use crate::ProducerExited; use super::signal::{JoinError, Signal}; -#[derive(Debug, Snafu)] -pub struct ProducerAlreadyExited { - source: ProducerExited, -} - #[extension(pub trait SignalExt)] impl Signal { fn map( self, mut func: F, - ) -> Result<(Signal, impl Future>), ProducerAlreadyExited> + ) -> Result<(Signal, impl Future>), ProducerExited> where T: 'static + Sync + Send + Clone, M: 'static + Sync + Send + Clone, F: 'static + Send + FnMut(T) -> M, { - let initial = func(self.subscribe().context(ProducerAlreadyExitedSnafu)?.get()); + let initial = func(self.subscribe()?.get()); Ok(Signal::new(initial, |mut publisher_stream| async move { while let Some(publisher) = publisher_stream.wait().await { diff --git a/home-assistant/src/input_number/mod.rs b/home-assistant/src/input_number/mod.rs index f7dca6b..db8626b 100644 --- a/home-assistant/src/input_number/mod.rs +++ b/home-assistant/src/input_number/mod.rs @@ -19,7 +19,7 @@ mod mode; pub use attributes::InputNumberAttributes; pub use mode::InputNumberMode; -#[derive(Debug, Snafu)] +#[derive(Debug, Clone, Snafu)] pub enum CreateSignalError { /// couldn't get the underlying state object signal StateObjectSignalError { @@ -28,7 +28,7 @@ pub enum CreateSignalError { /// couldn't map the state object to a power value MappedSignalError { - source: emitter_and_signal::signal_ext::ProducerAlreadyExited, + source: emitter_and_signal::ProducerExited, }, } diff --git a/home-assistant/src/sensor/device_classes/power.rs b/home-assistant/src/sensor/device_classes/power.rs index 9d271d6..ea8ad63 100644 --- a/home-assistant/src/sensor/device_classes/power.rs +++ b/home-assistant/src/sensor/device_classes/power.rs @@ -47,7 +47,7 @@ pub enum CreateSignalError { /// couldn't map the state object to a power value MappedSignalError { - source: emitter_and_signal::signal_ext::ProducerAlreadyExited, + source: emitter_and_signal::ProducerExited, }, } diff --git a/home-assistant/src/state_object.rs b/home-assistant/src/state_object.rs index ad45e80..27ca9a4 100644 --- a/home-assistant/src/state_object.rs +++ b/home-assistant/src/state_object.rs @@ -28,7 +28,7 @@ pub struct StateObject { pub type ExtractStateObjectError<'a, 'py, State, Attributes, ContextEvent> = as FromPyObject<'a, 'py>>::Error; -#[derive(Debug, Snafu)] +#[derive(Debug, Clone, Snafu)] pub enum CreateSignalError { /// couldn't get the state machine from the Home Assistant object GetStatesError { source: GetStatesError },