workflow_service/
error.rs

1use thiserror::Error;
2use workflow_core::channel::{ChannelError, RecvError, SendError, TryRecvError, TrySendError};
3
4#[derive(Error, Debug)]
5pub enum Error {
6    #[error("Error: {0}")]
7    Custom(String),
8
9    #[error("IO error: {0}")]
10    Io(#[from] std::io::Error),
11
12    #[error("Channel send() error")]
13    SendError,
14
15    #[error("Channel recv() error")]
16    RecvError,
17
18    #[error("Channel try_send() error")]
19    TrySendError,
20
21    #[error("Channel try_recv() error")]
22    TryRecvError,
23
24    #[error("Channel error: {0}")]
25    ChannelError(String),
26}
27
28impl Error {
29    pub fn custom<S: std::fmt::Display>(msg: S) -> Self {
30        Error::Custom(msg.to_string())
31    }
32}
33
34impl<T> From<SendError<T>> for Error {
35    fn from(_: SendError<T>) -> Self {
36        Error::SendError
37    }
38}
39
40impl<T> From<TrySendError<T>> for Error {
41    fn from(_: TrySendError<T>) -> Self {
42        Error::TrySendError
43    }
44}
45
46impl From<RecvError> for Error {
47    fn from(_: RecvError) -> Self {
48        Error::RecvError
49    }
50}
51
52impl From<TryRecvError> for Error {
53    fn from(_: TryRecvError) -> Self {
54        Error::TryRecvError
55    }
56}
57
58impl<T> From<ChannelError<T>> for Error {
59    fn from(err: ChannelError<T>) -> Self {
60        Error::ChannelError(err.to_string())
61    }
62}