morse_lib/
error.rs

1use std::{error::Error, fmt};
2
3/// ## Error enum
4#[derive(Debug, PartialEq, Clone, Copy)]
5pub enum MorseError {
6    InvalidChar,
7    InvalidMorseSequence,
8    InvalidBinary,
9}
10
11impl fmt::Display for MorseError {
12    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
13        match self {
14            MorseError::InvalidChar => write!(f, "Invalid char"),
15            MorseError::InvalidMorseSequence => write!(f, "Invalid Morse sequence "),
16            MorseError::InvalidBinary => write!(f, "Invalid binary "),
17        }
18    }
19}
20
21impl Error for MorseError {
22    fn source(&self) -> Option<&(dyn Error + 'static)> {
23        None
24    }
25
26    fn description(&self) -> &str {
27        "description() is deprecated; use Display"
28    }
29
30    fn cause(&self) -> Option<&dyn Error> {
31        self.source()
32    }
33}
34
35/// ## Own Result type
36pub type MorseResult<T> = Result<T, MorseError>;