1use std::path::PathBuf;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
5pub enum HypermailError {
6 #[error("I/O error: {0}")]
7 Io(#[from] std::io::Error),
8
9 #[error("Config error: {0}")]
10 Config(String),
11
12 #[error("Parse error: {0}")]
13 Parse(String),
14
15 #[error("Date parse error: {0}")]
16 DateParse(String),
17
18 #[error("Mbox parse error at line {line}: {message}")]
19 MboxParse { line: usize, message: String },
20
21 #[error("File not found: {0}")]
22 FileNotFound(PathBuf),
23
24 #[error("Invalid config value for '{key}': {message}")]
25 InvalidConfigValue { key: String, message: String },
26
27 #[error("Lock error: {0}")]
28 Lock(String),
29
30 #[error("{0}")]
31 Other(String),
32}
33
34pub type Result<T> = std::result::Result<T, HypermailError>;