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 }
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}