Skip to main content

nd_300/
error.rs

1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, AppError>;
4
5#[derive(Error, Debug)]
6pub enum AppError {
7    #[error("Network diagnostic failed: {message}")]
8    Diagnostic { message: String },
9
10    #[error("Platform operation failed: {message}")]
11    Platform { message: String },
12
13    #[error("I/O error: {0}")]
14    Io(#[from] std::io::Error),
15
16    #[error("HTTP request failed: {0}")]
17    Http(#[from] reqwest::Error),
18
19    #[error("DNS error: {message}")]
20    Dns { message: String },
21
22    #[error("Configuration error: {message}")]
23    Config { message: String },
24
25    #[cfg(windows)]
26    #[error("WMI query failed: {0}")]
27    Wmi(#[from] wmi::WMIError),
28}
29
30impl AppError {
31    pub fn diagnostic(message: impl Into<String>) -> Self {
32        Self::Diagnostic {
33            message: message.into(),
34        }
35    }
36
37    pub fn platform(message: impl Into<String>) -> Self {
38        Self::Platform {
39            message: message.into(),
40        }
41    }
42
43    pub fn dns(message: impl Into<String>) -> Self {
44        Self::Dns {
45            message: message.into(),
46        }
47    }
48
49    pub fn config(message: impl Into<String>) -> Self {
50        Self::Config {
51            message: message.into(),
52        }
53    }
54}