Skip to main content

x_one/
error.rs

1//! 统一错误类型
2
3/// x-one 框架统一错误类型
4#[derive(Debug, thiserror::Error)]
5pub enum XOneError {
6    /// Hook 执行错误
7    #[error("hook error: {0}")]
8    Hook(String),
9
10    /// 配置错误
11    #[error("config error: {0}")]
12    Config(String),
13
14    /// 日志初始化错误
15    #[error("log error: {0}")]
16    Log(String),
17
18    /// 服务器运行错误
19    #[error("server error: {0}")]
20    Server(String),
21
22    /// IO 错误
23    #[error("io error: {0}")]
24    Io(#[from] std::io::Error),
25
26    /// 多个错误合并
27    #[error("multiple errors: {}", .0.iter().map(|e| e.to_string()).collect::<Vec<_>>().join("; "))]
28    Multi(Vec<XOneError>),
29
30    /// 其他错误
31    #[error("{0}")]
32    Other(String),
33}
34
35impl From<String> for XOneError {
36    fn from(s: String) -> Self {
37        XOneError::Other(s)
38    }
39}
40
41/// 便捷的 Result 类型别名
42pub type Result<T> = std::result::Result<T, XOneError>;