1use crate::error::ExpectError;
2
3pub trait Input {
4 type Token: Copy + Eq;
5 type Slice;
6 type Checkpoint: Copy + Eq + Ord;
7 type Error: ExpectError;
8
9 fn next_token(&mut self) -> Option<Self::Token>;
11 fn peek_token(&self) -> Option<Self::Token>;
13 fn slice_since(&self, cp: Self::Checkpoint) -> Self::Slice;
15
16 fn checkpoint(&self) -> Self::Checkpoint;
17 fn reset(&mut self, checkpoint: Self::Checkpoint);
18 fn offset(&self) -> usize;
19 fn remaining(&self) -> Self::Slice;
20 fn is_eof(&self) -> bool;
21}