【发布时间】:2014-12-26 16:05:19
【问题描述】:
我目前正在学习 Rust 并编写简单的游戏。但是有一个错误。有一个字符向量(枚举),当尝试返回值(向量的某个索引处的值)时,编译器显示以下错误
rustc main.rs
field.rs:29:9: 29:39 error: cannot move out of dereference
(dereference is implicit, due to indexing)
field.rs:29 self.clone().field[index - 1u] as int
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: aborting due to previous error
main.rs:
mod field;
fn main() {
let mut field = field::Field::new(3u);
field.change_cell(1, field::Character::X);
println!("{}", field.get_cell(1));
}
field.rs:
pub enum Character {
NONE, X, O,
}
pub struct Field {
field: Vec<Character>,
size: uint,
cells: uint,
}
impl Field {
pub fn new(new_size: uint) -> Field {
Field {
field: Vec::with_capacity(new_size*new_size),
size: new_size,
cells: new_size*new_size,
}
}
pub fn change_cell(&mut self, cell_number: uint, new_value: Character) -> bool {
...
}
pub fn get_cell(&self, index: uint) -> int {
self.field[index - 1u] as int
}
}
【问题讨论】:
-
欢迎来到 Stack Overflow!将来,您应该尝试创建一个Minimal, Complete, and Verifiable example。这有助于我们更快地回答您的问题,并可能帮助您自己解决问题!
标签: pointers compiler-errors rust