scanner_rust/
scanner_error.rs1use std::{
2 error::Error,
3 fmt::{self, Display, Formatter},
4 io,
5 num::{ParseFloatError, ParseIntError},
6};
7
8#[derive(Debug)]
9pub enum ScannerError {
11 IOError(io::Error),
12 ParseIntError(ParseIntError),
13 ParseFloatError(ParseFloatError),
14}
15
16impl From<io::Error> for ScannerError {
17 #[inline]
18 fn from(err: io::Error) -> ScannerError {
19 ScannerError::IOError(err)
20 }
21}
22
23impl From<ParseIntError> for ScannerError {
24 #[inline]
25 fn from(err: ParseIntError) -> ScannerError {
26 ScannerError::ParseIntError(err)
27 }
28}
29
30impl From<ParseFloatError> for ScannerError {
31 #[inline]
32 fn from(err: ParseFloatError) -> ScannerError {
33 ScannerError::ParseFloatError(err)
34 }
35}
36
37impl Display for ScannerError {
38 #[inline]
39 fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), fmt::Error> {
40 match self {
41 ScannerError::IOError(err) => Display::fmt(&err, f),
42 ScannerError::ParseIntError(err) => Display::fmt(&err, f),
43 ScannerError::ParseFloatError(err) => Display::fmt(&err, f),
44 }
45 }
46}
47
48impl Error for ScannerError {}