是否可以在重新分配变量之前获得其所有权?

时间:2019-04-02 02:26:15

标签: rust

我正在尝试将用C语言编写的程序重写为Rust,以尝试解决这个问题。这是我正在处理的结构:

struct Parser<'l> {
    lexer: Lexer<'l>,
    current: Token,
    error: ErrorType,
    error_messages: Vec<String>,
}

这是有问题的代码:

fn eat(&mut self, ttype: TokenType) -> Option<Token> {
    let eaten: Token;
    if self.current.ttype == ttype {
        eaten = self.current;
        self.current = self.lexer.next_token();
        // ...
    }
    Some(eaten)
}

我希望能够保存self.current的内容,然后在下一行进行更改:

eaten = self.current;
self.current = self.lexer.next_token();

但是我得到了错误

error[E0507]: cannot move out of borrowed content
  --> src\parser.rs:37:21
   |
37 |             eaten = self.current;
   |                     ^^^^^^^^^^^^ cannot move out of borrowed content

我想我理解为什么会发生错误,但是我不知道如何解决该错误。

0 个答案:

没有答案