celestial_hub_compass/lexer/traits/
iterator.rs

1use crate::lexer::{tokens::Token, types::Spanned, Lexer, LexicalError};
2
3impl<'input> Iterator for Lexer<'input> {
4  type Item = Spanned<Token, usize, LexicalError>;
5
6  fn next(&mut self) -> Option<Self::Item> {
7    self
8      .token_stream
9      .next()
10      .map(|(tok, span)| Ok((span.start, tok.expect("Invalid token"), span.end)))
11  }
12}