1use thiserror::Error;
4
5#[derive(Error, Debug)]
9pub enum CrawlError {
10 #[error("HTTP 请求失败: {0}")]
12 Http(String),
13
14 #[error("URL 解析失败: {0}")]
16 Url(#[from] url::ParseError),
17
18 #[error("HTML 解析失败: {0}")]
20 Html(String),
21
22 #[error("回调执行出错: {0}")]
24 Callback(String),
25
26 #[error("IO 错误: {0}")]
28 Io(#[from] std::io::Error),
29
30 #[error("CSS 选择器解析失败 '{selector}': {message}")]
32 Selector { selector: String, message: String },
33
34 #[error("可读性提取失败: {0}")]
36 Readability(String),
37
38 #[error("配置错误: {0}")]
40 Config(String),
41
42 #[error("所有请求器均失败: {0}")]
44 AllFetchersFailed(String),
45
46 #[error("锁错误: {0}")]
48 Lock(String),
49}
50
51pub type Result<T> = std::result::Result<T, CrawlError>;