【发布时间】:2016-01-13 00:19:46
【问题描述】:
我正在用 Rust 实现一个解析器。我必须更新前瞻索引,但是当我在self.current() 之后调用self.get() 时出现错误:
cannot borrow *self as mutable more than once at a time
因为我是 Rust 新手,所以这很令人困惑。
#[derive(Debug)]
pub enum Token {
Random(String),
Undefined(String),
}
struct Point {
token: Vec<Token>,
look: usize,
}
impl Point {
pub fn init(&mut self){
while let Some(token) = self.current(){
println!("{:?}", token);
let _ = self.get();
}
}
pub fn current(&mut self) -> Option<&Token> {
self.token.get(self.look)
}
pub fn get(&mut self) -> Option<&Token> {
let v = self.token.get(self.look);
self.look += 1;
v
}
}
fn main(){
let token_list = vec![Token::Undefined("test".to_string()),
Token::Random("test".to_string())];
let mut o = Point{ token: token_list, look: 0 };
o.init();
}
【问题讨论】: