1use derive_more::From;
2
3pub type Result<A> = core::result::Result<A, Error>;
5
6#[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}