Skip to main content

itools_walker/
errors.rs

1use tokio::{sync::AcquireError, task::JoinError};
2
3/// 遍历错误
4#[derive(Debug)]
5pub enum WalkError {
6    /// IO 错误
7    Io(std::io::Error),
8    /// Glob 模式错误
9    GlobPattern(String),
10    /// Glob 解析错误
11    GlobParse(String),
12    /// 信号量获取错误
13    Acquire(AcquireError),
14    /// 任务连接错误
15    Join(JoinError),
16    /// 其他错误
17    Other(String),
18}
19
20impl std::error::Error for WalkError {}
21
22impl std::fmt::Display for WalkError {
23    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
24        match self {
25            WalkError::Io(err) => write!(f, "IO error: {}", err),
26            WalkError::GlobPattern(err) => write!(f, "Glob pattern error: {}", err),
27            WalkError::GlobParse(err) => write!(f, "Glob parse error: {}", err),
28            WalkError::Acquire(err) => write!(f, "Acquire error: {}", err),
29            WalkError::Join(err) => write!(f, "Join error: {}", err),
30            WalkError::Other(msg) => write!(f, "Other error: {}", msg),
31        }
32    }
33}
34
35impl From<std::io::Error> for WalkError {
36    fn from(err: std::io::Error) -> Self {
37        WalkError::Io(err)
38    }
39}
40
41impl From<AcquireError> for WalkError {
42    fn from(err: AcquireError) -> Self {
43        WalkError::Acquire(err)
44    }
45}
46
47impl From<JoinError> for WalkError {
48    fn from(err: JoinError) -> Self {
49        WalkError::Join(err)
50    }
51}