user_agent_parser/
errors.rs

1use std::{
2    error::Error,
3    fmt::{Display, Error as FmtError, Formatter},
4    io::Error as IOError,
5};
6
7use onig::Error as RegexError;
8use yaml_rust::ScanError;
9
10#[derive(Debug)]
11/// Possible errors of `UserAgentParser`.
12pub enum UserAgentParserError {
13    ScanError(ScanError),
14    IOError(IOError),
15    RegexError(RegexError),
16    IncorrectSource,
17}
18
19impl Display for UserAgentParserError {
20    #[inline]
21    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), FmtError> {
22        match self {
23            UserAgentParserError::ScanError(err) => Display::fmt(&err, f),
24            UserAgentParserError::IOError(err) => Display::fmt(&err, f),
25            UserAgentParserError::RegexError(err) => Display::fmt(&err, f),
26            UserAgentParserError::IncorrectSource => {
27                f.write_str("The source of regular expressions is incorrect.")
28            },
29        }
30    }
31}
32
33impl Error for UserAgentParserError {}
34
35impl From<ScanError> for UserAgentParserError {
36    #[inline]
37    fn from(error: ScanError) -> UserAgentParserError {
38        UserAgentParserError::ScanError(error)
39    }
40}
41
42impl From<IOError> for UserAgentParserError {
43    #[inline]
44    fn from(error: IOError) -> UserAgentParserError {
45        UserAgentParserError::IOError(error)
46    }
47}
48
49impl From<RegexError> for UserAgentParserError {
50    #[inline]
51    fn from(error: RegexError) -> UserAgentParserError {
52        UserAgentParserError::RegexError(error)
53    }
54}