Skip to main content

ling/lexer/
cursor.rs

1// src/lexer/cursor.rs
2#[derive(Clone)]
3pub struct Cursor<'a> {
4    source: &'a str,
5    offset: usize,
6    _line: usize,
7    col: usize,
8}
9
10impl<'a> Cursor<'a> {
11    pub fn new(source: &'a str) -> Self {
12        Self { source, offset: 0, _line: 0, col: 0 }
13    }
14    
15    pub fn advance(&mut self, count: usize) {
16        self.offset += count;
17        self.col += count;
18    }
19    
20    pub fn peek(&self) -> Option<char> {
21        self.source[self.offset..].chars().next()
22    }
23}