1use thiserror::Error;
2
3#[derive(Debug, Error)]
4#[allow(dead_code)]
5pub enum Error {
6 #[error(transparent)]
7 Anyhow(#[from] anyhow::Error),
8
9 #[error("I/O error: {0}")]
10 Io(#[from] std::io::Error),
11
12 #[error("serialization error: {0}")]
13 Serde(&'static str),
14
15 #[error("invalid input: {0}")]
16 Invalid(&'static str),
17
18 #[error("{0}")]
19 Message(String),
20
21 #[error(transparent)]
22 Csv(#[from] csv::Error),
23
24 #[error(transparent)]
25 Persist(#[from] tempfile::PersistError),
26
27 #[error(transparent)]
28 Hex(#[from] hex::FromHexError),
29
30 #[error(transparent)]
31 SystemTime(#[from] std::time::SystemTimeError),
32
33 #[error(transparent)]
34 FromUtf8(#[from] std::string::FromUtf8Error),
35}
36
37#[allow(dead_code)]
38pub type Result<T> = std::result::Result<T, Error>;
39
40#[macro_export]
41macro_rules! bail {
42 ($($arg:tt)*) => { return Err($crate::error::Error::Message(format!($($arg)*))) };
43}