use std::fmt;
pub type Result<T> = ::std::result::Result<T, Error>;
#[derive(Debug)]
pub enum Error {
ParseError,
UnclosedOpenParen,
InvalidRepeat,
RecursionExceeded,
LookBehindNotConst,
TrailingBackslash,
InvalidEscape(String),
UnclosedUnicodeName,
InvalidHex,
InvalidCodepointValue,
InvalidClass,
UnknownFlag(String),
NonUnicodeUnsupported,
InvalidBackref,
InnerError(regex::Error),
InvalidGroupName,
InvalidGroupNameBackref(String),
NamedBackrefOnly,
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(s) => write!(f, "Invalid escape: {}", s),
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(s) => write!(f, "Unknown group flag: {}", s),
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!(),
Error::InvalidGroupName => write!(f, "Could not parse group name"),
Error::InvalidGroupNameBackref(s) => write!(f, "Invalid group name in back reference: {}", s),
Error::NamedBackrefOnly => write!(f, "Numbered backref/call not allowed because named group was used, use a named backref instead"),
}
}
}