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:

  1. Given any Unicode scalar value, it is matched by at most one character range in a canonical character class.
  2. Every adjacent character range is separated by at least one Unicode scalar value.
  3. Given any pair of character ranges r1 and r2, if r1.end < r2.start, then r1 comes before r2 in 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]

[src]

Create a new class from an existing set of ranges.

[src]

Returns true if c is matched by this character class.

[src]

Removes the given character from the class if it exists.

Note that this takes O(n) time in the number of ranges.

[src]

Negates 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().

[src]

Apply 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>>

1.0.0
[src]

Returns the number of elements the vector can hold without reallocating.

Examples

let vec: Vec<i32> = Vec::with_capacity(10);
assert_eq!(vec.capacity(), 10);

1.0.0
[src]

Converts the vector into Box<[T]>.

Note that this will drop any excess capacity. Calling this and converting back to a vector with into_vec is equivalent to calling shrink_to_fit.

Examples

let v = vec![1, 2, 3];

let slice = v.into_boxed_slice();

Any excess capacity is removed:

let mut vec = Vec::with_capacity(10);
vec.extend([1, 2, 3].iter().cloned());

assert_eq!(vec.capacity(), 10);
let slice = vec.into_boxed_slice();
assert_eq!(slice.into_vec().capacity(), 3);

1.7.0
[src]

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();

1.0.0
[src]

Returns 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);

1.0.0
[src]

Returns 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]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl Debug for CharClass
[src]

[src]

Formats the value using the given formatter.

impl PartialEq for CharClass
[src]

[src]

This method tests for self and other values to be equal, and is used by ==. Read more

[src]

This method tests for !=.

impl Eq for CharClass
[src]

impl Deref for CharClass
[src]

The resulting type after dereferencing.

[src]

Dereferences the value.

impl IntoIterator for CharClass
[src]

The type of the elements being iterated over.

Which kind of iterator are we turning this into?

[src]

Creates an iterator from a value. Read more

impl<'a> IntoIterator for &'a CharClass
[src]

The type of the elements being iterated over.

Which kind of iterator are we turning this into?

[src]

Creates an iterator from a value. Read more

impl Display for CharClass
[src]

[src]

Formats the value using the given formatter. Read more