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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
use std::fmt;
pub type Result<T> = ::std::result::Result<T, Error>;
#[derive(Debug)]
pub enum Error {
ParseError,
UnclosedOpenParen,
InvalidRepeat,
RecursionExceeded,
LookBehindNotConst,
TrailingBackslash,
InvalidEscape,
UnclosedUnicodeName,
InvalidHex,
InvalidCodepointValue,
InvalidClass,
UnknownFlag,
NonUnicodeUnsupported,
InvalidBackref,
InnerError(regex::Error),
StackOverflow,
BacktrackLimitExceeded,
#[doc(hidden)]
__Nonexhaustive,
}
impl ::std::error::Error for Error {}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Error::ParseError => write!(f, "General parsing error"),
Error::UnclosedOpenParen => {
write!(f, "Opening parenthesis without closing parenthesis")
}
Error::InvalidRepeat => write!(f, "Invalid repeat syntax"),
Error::RecursionExceeded => write!(f, "Pattern too deeply nested"),
Error::LookBehindNotConst => write!(f, "Look-behind assertion without constant size"),
Error::TrailingBackslash => write!(f, "Backslash without following character"),
Error::InvalidEscape => write!(f, "Invalid escape"),
Error::UnclosedUnicodeName => write!(f, "Unicode escape not closed"),
Error::InvalidHex => write!(f, "Invalid hex escape"),
Error::InvalidCodepointValue => {
write!(f, "Invalid codepoint for hex or unicode escape")
}
Error::InvalidClass => write!(f, "Invalid character class"),
Error::UnknownFlag => write!(f, "Unknown group flag"),
Error::NonUnicodeUnsupported => write!(f, "Disabling Unicode not supported"),
Error::InvalidBackref => write!(f, "Invalid back reference"),
Error::InnerError(e) => write!(f, "Regex error: {}", e),
Error::StackOverflow => write!(f, "Max stack size exceeded for backtracking"),
Error::BacktrackLimitExceeded => write!(f, "Max limit for backtracking count exceeded"),
Error::__Nonexhaustive => unreachable!(),
}
}
}