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}