1use std::{io, net::AddrParseError, num::ParseIntError, string::FromUtf8Error};
2use thiserror::Error;
3use tokio::sync::AcquireError;
4use tokio::task::JoinError;
5
6#[derive(Error, Debug)]
7pub enum AppError {
8 #[error("I/O error: {0}")]
10 Io(#[from] io::Error),
11
12 #[error("Network error: {0}")]
14 Network(#[from] reqwest::Error),
15
16 #[error("String conversion error: {0}")]
18 Utf8(#[from] FromUtf8Error),
19
20 #[error("Parse error: {0}")]
22 ParseError(String),
23
24 #[error("Invalid input: {0}")]
26 InvalidInput(String),
27
28 #[error("{0}")]
30 Other(String),
31
32 #[error("Semaphore acquire error: {0}")]
34 SemaphoreError(#[from] AcquireError),
35
36 #[error("Task join error: {0}")]
38 JoinError(#[from] JoinError),
39
40 #[error("Address parse error: {0}")]
42 AddrParseError(#[from] AddrParseError),
43
44 #[error("Integer parse error: {0}")]
46 ParseIntError(#[from] ParseIntError),
47}