1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use std::error::Error;
use std::fmt;
#[derive(Debug, Copy, Clone)]
pub enum KennitalaError {
InvalidLength(usize),
InvalidNumber,
InvalidDay,
InvalidMonth,
InvalidRandomDigits,
InvalidChecksum,
InvalidCentury,
}
impl fmt::Display for KennitalaError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
KennitalaError::InvalidLength(n) => write!(f, "Length {} is invalid", n),
KennitalaError::InvalidNumber => write!(f, "Invalid number"),
KennitalaError::InvalidDay => write!(f, "Day of birth is invalid"),
KennitalaError::InvalidMonth => write!(f, "Month of birth is invalid"),
KennitalaError::InvalidRandomDigits => write!(f, "The random digits are invalid"),
KennitalaError::InvalidChecksum => write!(f, "The kennitala's checksum is invalid"),
KennitalaError::InvalidCentury => write!(f, "Century of birth is invalid"),
}
}
}
impl Error for KennitalaError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
None
}
}