Skip to main content

edfsm_machine/
error.rs

1use derive_more::From;
2
3/// Result type for this module
4pub type Result<A> = core::result::Result<A, Error>;
5
6/// Error type for this module
7#[derive(Debug, Clone, From)]
8pub enum Error {
9    ChannelClosed,
10}
11
12#[cfg(feature = "tokio")]
13pub mod adapt_tokio {
14    use super::Error;
15    use tokio::sync::{broadcast, mpsc, oneshot};
16
17    impl<E> From<mpsc::error::SendError<E>> for Error {
18        fn from(_: mpsc::error::SendError<E>) -> Self {
19            Error::ChannelClosed
20        }
21    }
22
23    impl<E> From<broadcast::error::SendError<E>> for Error {
24        fn from(_: broadcast::error::SendError<E>) -> Self {
25            Error::ChannelClosed
26        }
27    }
28
29    impl From<oneshot::error::RecvError> for Error {
30        fn from(_: oneshot::error::RecvError) -> Self {
31            Error::ChannelClosed
32        }
33    }
34}
35
36#[cfg(feature = "streambed")]
37mod adapt_streambed {
38    use super::Error;
39
40    impl From<streambed_codec::ProducerError> for Error {
41        fn from(_: streambed_codec::ProducerError) -> Self {
42            Error::ChannelClosed
43        }
44    }
45}