pub mod ast;
pub mod fa;
pub mod unicode;
pub mod util;
pub mod xsregexp;
pub trait Atom: Clone + Copy + PartialOrd + Ord + PartialEq + Eq + Default {
const MIN: Self;
const MAX: Self;
const EPSILON: Self;
fn previous(&self) -> Option<Self>;
fn next(&self) -> Option<Self>;
}
impl Atom for char {
const MIN: Self = '\x01';
const MAX: Self = char::MAX;
const EPSILON: Self = char::MIN;
fn previous(&self) -> Option<Self> {
(char::MIN..*self).next_back()
}
fn next(&self) -> Option<Self> {
let mut range = *self..;
range.next(); range.next()
}
}