【发布时间】:2015-11-01 16:17:12
【问题描述】:
我正在尝试编写代码来获取某个向量的最后一个元素,并根据该元素执行不同的操作(包括向量的突变)。
我试过这样:
#[derive(Clone, PartialEq)]
enum ParseItem {
Start,
End,
}
let mut item_vec = vec![ParseItem::End];
loop {
let last_item = *item_vec.last().clone().unwrap();
match last_item {
ParseItem::End => item_vec.push(ParseItem::Start),
_ => break,
}
}
我收到以下错误:
错误:无法移出借用内容
let last_item = *item_vec.last().clone().unwrap();
我以为通过克隆item_vec.last(),所有权问题会解决,但似乎没有。
如果我用这样的整数向量尝试同样的事情:
let mut int_vec = vec![0];
loop {
let last_int = *int_vec.last().clone().unwrap();
match last_int {
0 => int_vec.push(1),
_ => break,
}
}
编译器不会抱怨借用。
为什么我的代码编译失败?
【问题讨论】:
标签: rust