scientific_cal/
error.rs

1use std::fmt;
2
3use crate::{filters::FilterError, smooth::SmoothError, spectrum::SpectrumError};
4
5#[derive(Debug)]
6pub enum ScientificError {
7    Io(std::io::Error),
8    Spectrum(SpectrumError),
9    Filter(FilterError),
10    Math(String),
11    Smooth(SmoothError),
12    InvalidArgument(String),
13    // 可拓展更多
14}
15
16impl std::error::Error for ScientificError {}
17
18impl fmt::Display for ScientificError {
19    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
20        match self {
21            ScientificError::Io(e) => write!(f, "IO Error: {}", e),
22            ScientificError::Spectrum(e) => write!(f, "Spectrum Error: {}", e),
23            ScientificError::Filter(e) => write!(f, "Filter Error: {}", e),
24            ScientificError::Math(msg) => write!(f, "Math Error: {}", msg),
25            ScientificError::Smooth(e) => write!(f, "Filter Error: {}", e),
26            ScientificError::InvalidArgument(msg) => write!(f, "Invalid Argument: {}", msg),
27        }
28    }
29}
30
31impl From<std::io::Error> for ScientificError {
32    fn from(err: std::io::Error) -> ScientificError {
33        ScientificError::Io(err)
34    }
35}
36
37impl From<SpectrumError> for ScientificError {
38    fn from(err: SpectrumError) -> ScientificError {
39        ScientificError::Spectrum(err)
40    }
41}
42
43impl From<FilterError> for ScientificError {
44    fn from(err: FilterError) -> ScientificError {
45        ScientificError::Filter(err)
46    }
47}
48
49impl From<SmoothError> for ScientificError {
50    fn from(err: SmoothError) -> ScientificError {
51        ScientificError::Smooth(err)
52    }
53}