pub struct Lexer { str: String, c: usize } impl Lexer { pub fn get_string(&mut self) -> Option<&str> { let w = self.str[self.c..].find(|c: char| c.is_whitespace())? + self.c; let t = &self.str[self.c..w]; self.c = w; for c in self.str[self.c..].chars() { if !c.is_whitespace() { break; } else { self.c += 1 } } Some(t) } pub fn get_rest(&mut self) -> &str { &self.str[self.c..] } }