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}