pub trait Stream: Offset<Self::Checkpoint> + Debug {
    type Token: Debug;
    type Slice: Debug;
    type IterOffsets: Iterator<Item = (usize, Self::Token)>;
    type Checkpoint: Offset + Clone + Debug;
Show 13 methods
    // Required methods
    fn iter_offsets(&self) -> Self::IterOffsets;
    fn eof_offset(&self) -> usize;
    fn next_token(&mut self) -> Option<Self::Token>;
    fn offset_for<P>(&self, predicate: P) -> Option<usize>
       where P: Fn(Self::Token) -> bool;
    fn offset_at(&self, tokens: usize) -> Result<usize, Needed>;
    fn next_slice(&mut self, offset: usize) -> Self::Slice;
    fn checkpoint(&self) -> Self::Checkpoint;
    fn reset(&mut self, checkpoint: Self::Checkpoint);
    fn raw(&self) -> &dyn Debug;
    // Provided methods
    fn peek_token(&self) -> Option<(Self, Self::Token)>
       where Self: Clone { ... }
    fn peek_slice(&self, offset: usize) -> (Self, Self::Slice)
       where Self: Clone { ... }
    fn finish(&mut self) -> Self::Slice { ... }
    fn peek_finish(&self) -> (Self, Self::Slice)
       where Self: Clone { ... }
}Expand description
Core definition for parser input state
Required Associated Types§
sourcetype Slice: Debug
 
type Slice: Debug
Sequence of Tokens
Example: &[u8] for Located<&[u8]> or &str for Located<&str>
sourcetype IterOffsets: Iterator<Item = (usize, Self::Token)>
 
type IterOffsets: Iterator<Item = (usize, Self::Token)>
Iterate with the offset from the current location
sourcetype Checkpoint: Offset + Clone + Debug
 
type Checkpoint: Offset + Clone + Debug
A parse location within the stream
Required Methods§
sourcefn iter_offsets(&self) -> Self::IterOffsets
 
fn iter_offsets(&self) -> Self::IterOffsets
Iterate with the offset from the current location
sourcefn eof_offset(&self) -> usize
 
fn eof_offset(&self) -> usize
Returns the offset to the end of the input
sourcefn next_token(&mut self) -> Option<Self::Token>
 
fn next_token(&mut self) -> Option<Self::Token>
Split off the next token from the input
sourcefn offset_for<P>(&self, predicate: P) -> Option<usize>where
    P: Fn(Self::Token) -> bool,
 
fn offset_for<P>(&self, predicate: P) -> Option<usize>where P: Fn(Self::Token) -> bool,
Finds the offset of the next matching token
sourcefn offset_at(&self, tokens: usize) -> Result<usize, Needed>
 
fn offset_at(&self, tokens: usize) -> Result<usize, Needed>
Get the offset for the number of tokens into the stream
This means “0 tokens” will return 0 offset
sourcefn next_slice(&mut self, offset: usize) -> Self::Slice
 
fn next_slice(&mut self, offset: usize) -> Self::Slice
Split off a slice of tokens from the input
NOTE: For inputs with variable width tokens, like &str’s char, offset might not correspond
with the number of tokens.  To get a valid offset, use:
Panic
This will panic if
- Indexes must be within bounds of the original input;
 - Indexes must uphold invariants of the stream, like for 
strthey must lie on UTF-8 sequence boundaries. 
sourcefn checkpoint(&self) -> Self::Checkpoint
 
fn checkpoint(&self) -> Self::Checkpoint
Save the current parse location within the stream
sourcefn reset(&mut self, checkpoint: Self::Checkpoint)
 
fn reset(&mut self, checkpoint: Self::Checkpoint)
Revert the stream to a prior Self::Checkpoint
Panic
May panic if an invalid Self::Checkpoint is provided
Provided Methods§
sourcefn peek_token(&self) -> Option<(Self, Self::Token)>where
    Self: Clone,
 
fn peek_token(&self) -> Option<(Self, Self::Token)>where Self: Clone,
Split off the next token from the input
sourcefn peek_slice(&self, offset: usize) -> (Self, Self::Slice)where
    Self: Clone,
 
fn peek_slice(&self, offset: usize) -> (Self, Self::Slice)where Self: Clone,
Split off a slice of tokens from the input
sourcefn peek_finish(&self) -> (Self, Self::Slice)where
    Self: Clone,
 
fn peek_finish(&self) -> (Self, Self::Slice)where Self: Clone,
Advance to the end of the stream