我在Rust中實現了一個解析器。我需要更新先行指標,但是當我self.current()
後打電話self.get()
我得到一個錯誤:爲什麼我得到錯誤「不能借用x作爲多次可變」?
cannot borrow *self as mutable more than once at a time
這是令人困惑,因爲我是新來的生鏽。
#[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();
}
究竟會做這樣的事情在生鏽的正確方法? – GOD
@GOD重構您的代碼,以便您不會引用正在發生變化的事物 – Adrian