1use std::{error::Error, fmt::Display, io};
5
6use umya_spreadsheet::XlsxError;
7#[derive(Debug)]
8pub enum SplitError {
9 IO(std::io::Error),
10 Xlsx(XlsxError),
12 Other(String),
14}
15
16impl From<io::Error> for SplitError {
17 fn from(err: io::Error) -> SplitError {
18 SplitError::IO(err)
19 }
20}
21impl From<XlsxError> for SplitError {
22 fn from(err: XlsxError) -> SplitError {
23 SplitError::Xlsx(err)
24 }
25}
26
27impl From<String> for SplitError {
28 fn from(err: String) -> SplitError {
29 SplitError::Other(err)
30 }
31}
32
33impl From<SplitError> for String {
34 fn from(value: SplitError) -> Self {
35 value.to_string()
36 }
37}
38
39impl Display for SplitError {
40 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
41 let info = match self {
42 SplitError::IO(err) => err.to_string(),
43 SplitError::Xlsx(err) => err.to_string(),
44 SplitError::Other(err) => err.to_owned(),
45 };
48 write!(f, "{info}")
49 }
50}
51impl Error for SplitError {}
52
53pub type SplitResult<T> = Result<T, SplitError>;