1use std::io::{self, ErrorKind};
2
3use thiserror::Error;
4
5#[derive(Error, Debug)]
6pub enum AppError {
7 #[error(transparent)]
8 EnvError(#[from] dotenvy::Error),
9
10 #[error(transparent)]
11 IOError(#[from] io::Error),
12
13 #[error(transparent)]
14 TomlParseError(#[from] toml::de::Error),
15
16 #[error("merge toml error: {0}")]
17 TomlMergeError(String),
18
19 #[error(transparent)]
20 JoinError(#[from] tokio::task::JoinError),
21
22 #[error(transparent)]
23 OtherError(#[from] anyhow::Error),
24}
25
26impl AppError {
27 pub fn from_io(kind: ErrorKind, msg: &str) -> Self {
28 AppError::IOError(io::Error::new(kind, msg))
29 }
30}
31
32pub type Result<T> = std::result::Result<T, AppError>;