workflow_service/
error.rs1use 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}