#[non_exhaustive]pub enum ErrorKind {
Show 34 variants
CaptureLimitExceeded,
ClassEscapeInvalid,
ClassRangeInvalid,
ClassRangeLiteral,
ClassUnclosed,
DecimalEmpty,
DecimalInvalid,
EscapeHexEmpty,
EscapeHexInvalid,
EscapeHexInvalidDigit,
EscapeUnexpectedEof,
EscapeUnrecognized,
FlagDanglingNegation,
FlagDuplicate {
original: Span,
},
FlagRepeatedNegation {
original: Span,
},
FlagUnexpectedEof,
FlagUnrecognized,
GroupNameDuplicate {
original: Span,
},
GroupNameEmpty,
GroupNameInvalid,
GroupNameUnexpectedEof,
GroupUnclosed,
GroupUnopened,
NestLimitExceeded(u32),
RepetitionCountInvalid,
RepetitionCountDecimalEmpty,
RepetitionCountUnclosed,
RepetitionMissing,
SpecialWordBoundaryUnclosed,
SpecialWordBoundaryUnrecognized,
SpecialWordOrRepetitionUnexpectedEof,
UnicodeClassInvalid,
UnsupportedBackreference,
UnsupportedLookAround,
}
Expand description
The type of an error that occurred while building an AST.
This error type is marked as non_exhaustive
. This means that adding a
new variant is not considered a breaking change.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
CaptureLimitExceeded
The capturing group limit was exceeded.
Note that this represents a limit on the total number of capturing groups in a regex and not necessarily the number of nested capturing groups. That is, the nest limit can be low and it is still possible for this error to occur.
ClassEscapeInvalid
An invalid escape sequence was found in a character class set.
ClassRangeInvalid
An invalid character class range was found. An invalid range is any range where the start is greater than the end.
ClassRangeLiteral
An invalid range boundary was found in a character class. Range boundaries must be a single literal codepoint, but this error indicates that something else was found, such as a nested class.
ClassUnclosed
An opening [
was found with no corresponding closing ]
.
DecimalEmpty
Note that this error variant is no longer used. Namely, a decimal
number can only appear as a repetition quantifier. When the number
in a repetition quantifier is empty, then it gets its own specialized
error, RepetitionCountDecimalEmpty
.
DecimalInvalid
An invalid decimal number was given where one was expected.
EscapeHexEmpty
A bracketed hex literal was empty.
EscapeHexInvalid
A bracketed hex literal did not correspond to a Unicode scalar value.
EscapeHexInvalidDigit
An invalid hexadecimal digit was found.
EscapeUnexpectedEof
EOF was found before an escape sequence was completed.
EscapeUnrecognized
An unrecognized escape sequence.
FlagDanglingNegation
A dangling negation was used when setting flags, e.g., i-
.
FlagDuplicate
A flag was used twice, e.g., i-i
.
Fields
FlagRepeatedNegation
The negation operator was used twice, e.g., -i-s
.
Fields
FlagUnexpectedEof
Expected a flag but got EOF, e.g., (?
.
FlagUnrecognized
Unrecognized flag, e.g., a
.
GroupNameDuplicate
A duplicate capture name was found.
Fields
GroupNameEmpty
A capture group name is empty, e.g., (?P<>abc)
.
GroupNameInvalid
An invalid character was seen for a capture group name. This includes errors where the first character is a digit (even though subsequent characters are allowed to be digits).
GroupNameUnexpectedEof
A closing >
could not be found for a capture group name.
GroupUnclosed
An unclosed group, e.g., (ab
.
The span of this error corresponds to the unclosed parenthesis.
GroupUnopened
An unopened group, e.g., ab)
.
NestLimitExceeded(u32)
The nest limit was exceeded. The limit stored here is the limit configured in the parser.
RepetitionCountInvalid
The range provided in a counted repetition operator is invalid. The range is invalid if the start is greater than the end.
RepetitionCountDecimalEmpty
An opening {
was not followed by a valid decimal value.
For example, x{}
or x{]}
would fail.
RepetitionCountUnclosed
An opening {
was found with no corresponding closing }
.
RepetitionMissing
A repetition operator was applied to a missing sub-expression. This
occurs, for example, in the regex consisting of just a *
or even
(?i)*
. It is, however, possible to create a repetition operating on
an empty sub-expression. For example, ()*
is still considered valid.
SpecialWordBoundaryUnclosed
The special word boundary syntax, \b{something}
, was used, but
either EOF without }
was seen, or an invalid character in the
braces was seen.
SpecialWordBoundaryUnrecognized
The special word boundary syntax, \b{something}
, was used, but
something
was not recognized as a valid word boundary kind.
SpecialWordOrRepetitionUnexpectedEof
The syntax \b{
was observed, but afterwards the end of the pattern
was observed without being able to tell whether it was meant to be a
bounded repetition on the \b
or the beginning of a special word
boundary assertion.
UnicodeClassInvalid
The Unicode class is not valid. This typically occurs when a \p
is
followed by something other than a {
.
UnsupportedBackreference
When octal support is disabled, this error is produced when an octal escape is used. The octal escape is assumed to be an invocation of a backreference, which is the common case.
UnsupportedLookAround
When syntax similar to PCRE’s look-around is used, this error is
returned. Some example syntaxes that are rejected include, but are
not necessarily limited to, (?=re)
, (?!re)
, (?<=re)
and
(?<!re)
. Note that all of these syntaxes are otherwise invalid; this
error is used to improve the user experience.
Trait Implementations§
impl Eq for ErrorKind
impl StructuralPartialEq for ErrorKind
Auto Trait Implementations§
impl Freeze for ErrorKind
impl RefUnwindSafe for ErrorKind
impl Send for ErrorKind
impl Sync for ErrorKind
impl Unpin for ErrorKind
impl UnwindSafe for ErrorKind
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 56 bytes
Size for each variant:
CaptureLimitExceeded
: 0 bytesClassEscapeInvalid
: 0 bytesClassRangeInvalid
: 0 bytesClassRangeLiteral
: 0 bytesClassUnclosed
: 0 bytesDecimalEmpty
: 0 bytesDecimalInvalid
: 0 bytesEscapeHexEmpty
: 0 bytesEscapeHexInvalid
: 0 bytesEscapeHexInvalidDigit
: 0 bytesEscapeUnexpectedEof
: 0 bytesEscapeUnrecognized
: 0 bytesFlagDanglingNegation
: 0 bytesFlagDuplicate
: 52 bytesFlagRepeatedNegation
: 52 bytesFlagUnexpectedEof
: 0 bytesFlagUnrecognized
: 0 bytesGroupNameDuplicate
: 52 bytesGroupNameEmpty
: 0 bytesGroupNameInvalid
: 0 bytesGroupNameUnexpectedEof
: 0 bytesGroupUnclosed
: 0 bytesGroupUnopened
: 0 bytesNestLimitExceeded
: 4 bytesRepetitionCountInvalid
: 0 bytesRepetitionCountDecimalEmpty
: 0 bytesRepetitionCountUnclosed
: 0 bytesRepetitionMissing
: 0 bytesSpecialWordBoundaryUnclosed
: 0 bytesSpecialWordBoundaryUnrecognized
: 0 bytesSpecialWordOrRepetitionUnexpectedEof
: 0 bytesUnicodeClassInvalid
: 0 bytesUnsupportedBackreference
: 0 bytesUnsupportedLookAround
: 0 bytes