Skip to main content

blitzagent/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum BlitzError {
5    #[error("not found")]
6    NotFound,
7
8    #[error("channel failed")]
9    ChannelDown,
10
11    #[error("{0}")]
12    ApiError(String),
13
14    #[error(transparent)]
15    RequestError(#[from] reqwest::Error),
16
17    #[error(transparent)]
18    IoError(#[from] std::io::Error),
19
20    #[error(transparent)]
21    TokioRecErr(#[from] tokio::sync::oneshot::error::RecvError),
22
23    #[error("{0}")]
24    MissingArgument(String),
25
26    #[error("failed to parse argument")]
27    ArgumentParseErrror,
28}
29
30impl<T> From<crossbeam::channel::SendError<T>> for BlitzError {
31    fn from(_: crossbeam::channel::SendError<T>) -> Self {
32        BlitzError::ChannelDown
33    }
34}
35
36impl From<crossbeam::channel::RecvError> for BlitzError {
37    fn from(_: crossbeam::channel::RecvError) -> Self {
38        BlitzError::ChannelDown
39    }
40}
41
42impl From<std::num::ParseIntError> for BlitzError{
43    fn from(_: std::num::ParseIntError) -> Self {
44        BlitzError::ArgumentParseErrror
45    }
46}