I\'m implementing a parser in Rust. I have to update the index for the lookahead, but when I call self.get()
after self.current()
I get an error:
The function Point::get
mutates the Point
that it is called on. The function Point::current
returns a reference to a part of the Point
that it is called on. So, when you write
while let Some(token) = self.current() {
println!("{:?}", token);
let _ = self.get();
}
token
is a reference to something stored in self
. Because mutating self
might change or delete whatever token
points to, the compiler prevents you from calling self.get()
while the variable token
is in scope.