Struct Regex

Source
pub struct Regex<A: Alphabet> { /* private fields */ }
Expand description

Represents regular expressions over some finite alphabet.

Optimizes storage and construction for reoccurring subexpressions to allow polynomial time conversion from NFA. You can create (and keep) handles on subexpressions, then evaluate as if those subexpressions were at the root. This relationship forms an acyclic graph.

Implementations§

Source§

impl<A: Alphabet> Regex<A>

Source

pub fn new() -> Self

Source

pub fn push(&mut self, op: Op<A>) -> Handle

Push a new operation as the regex root.

It is not required that all regex states are reachable afterwards but all handles must point to existing operations. Returns a handle on the newly inserted operation.

Source

pub fn root(&self) -> Option<Handle>

Get a root to the regex.

Source

pub fn cached(self) -> Cached<A>

Modify the regex with a cache for same terms.

By using a cache for terms, it is possible to lower the memory requirements of the resulting regex through resued subexpressions.

Source

pub fn to_string(&self) -> String

Get a string representation of this regex.

Trait Implementations§

Source§

impl<A: Alphabet> Default for Regex<A>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<A> Freeze for Regex<A>

§

impl<A> RefUnwindSafe for Regex<A>
where A: RefUnwindSafe,

§

impl<A> Send for Regex<A>
where A: Send,

§

impl<A> Sync for Regex<A>
where A: Sync,

§

impl<A> Unpin for Regex<A>
where A: Unpin,

§

impl<A> UnwindSafe for Regex<A>
where A: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.