user_agent_parser/
errors.rs1use std::{
2 error::Error,
3 fmt::{Display, Error as FmtError, Formatter},
4 io::Error as IOError,
5};
6
7use regex::Error as RegexError;
8use yaml_rust::ScanError;
9
10#[derive(Debug)]
11pub enum UserAgentParserError {
13 ScanError(ScanError),
15 IOError(IOError),
17 RegexError(RegexError),
19 IncorrectSource,
21}
22
23impl Display for UserAgentParserError {
24 #[inline]
25 fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), FmtError> {
26 match self {
27 UserAgentParserError::ScanError(err) => Display::fmt(&err, f),
28 UserAgentParserError::IOError(err) => Display::fmt(&err, f),
29 UserAgentParserError::RegexError(err) => Display::fmt(&err, f),
30 UserAgentParserError::IncorrectSource => {
31 f.write_str("The source of regular expressions is incorrect.")
32 },
33 }
34 }
35}
36
37impl Error for UserAgentParserError {
38 #[inline]
39 fn source(&self) -> Option<&(dyn Error + 'static)> {
40 match self {
41 UserAgentParserError::ScanError(err) => Some(err),
42 UserAgentParserError::IOError(err) => Some(err),
43 UserAgentParserError::RegexError(err) => Some(err),
44 UserAgentParserError::IncorrectSource => None,
45 }
46 }
47}
48
49impl From<ScanError> for UserAgentParserError {
50 #[inline]
51 fn from(error: ScanError) -> UserAgentParserError {
52 UserAgentParserError::ScanError(error)
53 }
54}
55
56impl From<IOError> for UserAgentParserError {
57 #[inline]
58 fn from(error: IOError) -> UserAgentParserError {
59 UserAgentParserError::IOError(error)
60 }
61}
62
63impl From<RegexError> for UserAgentParserError {
64 #[inline]
65 fn from(error: RegexError) -> UserAgentParserError {
66 UserAgentParserError::RegexError(error)
67 }
68}