use ::std::fmt::Debug;
use ::regex::Regex;
use crate::io::source::SourceSlice;
use std::rc::Rc;
#[derive(Debug, PartialEq, Eq)]
pub enum ReaderResult {
Match(SourceSlice),
NoMatch,
}
impl ReaderResult {
pub fn unwrap(self) -> SourceSlice {
match self {
ReaderResult::Match(ss) => ss,
ReaderResult::NoMatch => panic!("Unwrap on ReaderResult that does not contain a match"),
}
}
}
pub trait Reader {
fn strip_match(&mut self, pattern: &Regex) -> ReaderResult;
fn strip_peek(&mut self, pattern: &Regex) -> ReaderResult;
fn direct_match(&mut self, pattern: &Regex) -> ReaderResult;
fn direct_peek(&mut self, pattern: &Regex) -> ReaderResult;
fn remaining_len(&self) -> usize;
}