Struct regex_syntax::CharClass
[−]
[src]
pub struct CharClass { /* fields omitted */ }A character class.
A character class has a canonical format that the parser guarantees. Its canonical format is defined by the following invariants:
- Given any Unicode scalar value, it is matched by at most one character range in a canonical character class.
- Every adjacent character range is separated by at least one Unicode scalar value.
- Given any pair of character ranges
r1andr2, ifr1.end < r2.start, thenr1comes beforer2in a canonical character class.
In sum, any CharClass produced by this crate's parser is a sorted
sequence of non-overlapping ranges. This makes it possible to test whether
a character is matched by a class with a binary search.
If the case insensitive flag was set when parsing a character class, then
simple case folding is done automatically. For example, (?i)[a-c] is
automatically translated to [a-cA-C].
Methods
impl CharClass[src]
impl CharClasspub fn new(ranges: Vec<ClassRange>) -> CharClass[src]
pub fn new(ranges: Vec<ClassRange>) -> CharClassCreate a new class from an existing set of ranges.
pub fn matches(&self, c: char) -> bool[src]
pub fn matches(&self, c: char) -> boolReturns true if c is matched by this character class.
pub fn remove(&mut self, c: char)[src]
pub fn remove(&mut self, c: char)Removes the given character from the class if it exists.
Note that this takes O(n) time in the number of ranges.
pub fn negate(self) -> CharClass[src]
pub fn negate(self) -> CharClassNegates the character class.
For all c where c is a Unicode scalar value, c matches self
if and only if c does not match self.negate().
pub fn case_fold(self) -> CharClass[src]
pub fn case_fold(self) -> CharClassApply case folding to this character class.
N.B. Applying case folding to a negated character class probably
won't produce the expected result. e.g., (?i)[^x] really should
match any character sans x and X, but if [^x] is negated
before being case folded, you'll end up matching any character.
Methods from Deref<Target = Vec<ClassRange>>
pub fn capacity(&self) -> usize1.0.0[src]
pub fn capacity(&self) -> usizeReturns the number of elements the vector can hold without reallocating.
Examples
let vec: Vec<i32> = Vec::with_capacity(10); assert_eq!(vec.capacity(), 10);
pub fn as_slice(&self) -> &[T]1.7.0[src]
pub fn as_slice(&self) -> &[T]Extracts a slice containing the entire vector.
Equivalent to &s[..].
Examples
use std::io::{self, Write}; let buffer = vec![1, 2, 3, 5, 8]; io::sink().write(buffer.as_slice()).unwrap();
pub fn len(&self) -> usize1.0.0[src]
pub fn len(&self) -> usizeReturns the number of elements in the vector, also referred to as its 'length'.
Examples
let a = vec![1, 2, 3]; assert_eq!(a.len(), 3);
pub fn is_empty(&self) -> bool1.0.0[src]
pub fn is_empty(&self) -> boolReturns true if the vector contains no elements.
Examples
let mut v = Vec::new(); assert!(v.is_empty()); v.push(1); assert!(!v.is_empty());
Trait Implementations
impl Clone for CharClass[src]
impl Clone for CharClassfn clone(&self) -> CharClass[src]
fn clone(&self) -> CharClassReturns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0[src]
fn clone_from(&mut self, source: &Self)Performs copy-assignment from source. Read more
impl Debug for CharClass[src]
impl Debug for CharClassfn fmt(&self, __arg_0: &mut Formatter) -> Result[src]
fn fmt(&self, __arg_0: &mut Formatter) -> ResultFormats the value using the given formatter. Read more
impl PartialEq for CharClass[src]
impl PartialEq for CharClassfn eq(&self, __arg_0: &CharClass) -> bool[src]
fn eq(&self, __arg_0: &CharClass) -> boolThis method tests for self and other values to be equal, and is used by ==. Read more
fn ne(&self, __arg_0: &CharClass) -> bool[src]
fn ne(&self, __arg_0: &CharClass) -> boolThis method tests for !=.
impl Eq for CharClass[src]
impl Eq for CharClassimpl Deref for CharClass[src]
impl Deref for CharClasstype Target = Vec<ClassRange>
The resulting type after dereferencing.
fn deref(&self) -> &Vec<ClassRange>[src]
fn deref(&self) -> &Vec<ClassRange>Dereferences the value.
impl IntoIterator for CharClass[src]
impl IntoIterator for CharClasstype Item = ClassRange
The type of the elements being iterated over.
type IntoIter = IntoIter<ClassRange>
Which kind of iterator are we turning this into?
ⓘImportant traits for IntoIter<T>fn into_iter(self) -> IntoIter<ClassRange>[src]
fn into_iter(self) -> IntoIter<ClassRange>Creates an iterator from a value. Read more
impl<'a> IntoIterator for &'a CharClass[src]
impl<'a> IntoIterator for &'a CharClasstype Item = &'a ClassRange
The type of the elements being iterated over.
type IntoIter = Iter<'a, ClassRange>
Which kind of iterator are we turning this into?
ⓘImportant traits for Iter<'a, T>fn into_iter(self) -> Iter<'a, ClassRange>[src]
fn into_iter(self) -> Iter<'a, ClassRange>Creates an iterator from a value. Read more
impl Display for CharClass[src]
impl Display for CharClass