xlsx_split/
error.rs

1//! error info
2
3/// error info
4use std::{error::Error, fmt::Display, io};
5
6use umya_spreadsheet::XlsxError;
7#[derive(Debug)]
8pub enum SplitError {
9    IO(std::io::Error),
10    /// 读取或者写入xlsx错误
11    Xlsx(XlsxError),
12    /// 其他错误
13    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            //#[cfg(feature = "encrypt")]
46            //SplitError::Crypt(err) => err.to_string(),
47        };
48        write!(f, "{info}")
49    }
50}
51impl Error for SplitError {}
52
53/// 分隔结果
54pub type SplitResult<T> = Result<T, SplitError>;