Skip to main content

x_one/
error.rs

1//! 统一错误类型
2//!
3//! 定义 `XOneError` 枚举和 `Result<T>` 类型别名,
4//! 所有模块通过 `Result<T, XOneError>` 传播错误。
5
6/// x-one 框架统一错误类型
7///
8/// 各变体对应不同的错误来源,便于调用方按类型匹配处理。
9#[derive(Debug, thiserror::Error)]
10pub enum XOneError {
11    /// Hook 执行错误
12    #[error("hook error: {0}")]
13    Hook(String),
14
15    /// 配置错误
16    #[error("config error: {0}")]
17    Config(String),
18
19    /// 日志初始化错误
20    #[error("log error: {0}")]
21    Log(String),
22
23    /// 服务器运行错误
24    #[error("server error: {0}")]
25    Server(String),
26
27    /// IO 错误
28    #[error("io error: {0}")]
29    Io(#[from] std::io::Error),
30
31    /// 多个错误合并
32    #[error("multiple errors: {}", .0.iter().map(|e| e.to_string()).collect::<Vec<_>>().join("; "))]
33    Multi(Vec<XOneError>),
34
35    /// 其他错误
36    #[error("{0}")]
37    Other(String),
38}
39
40impl From<String> for XOneError {
41    fn from(s: String) -> Self {
42        XOneError::Other(s)
43    }
44}
45
46/// 便捷的 Result 类型别名
47pub type Result<T> = std::result::Result<T, XOneError>;