【发布时间】:2014-12-14 10:06:26
【问题描述】:
我有两段代码在几天前运行良好。它们看起来相当简单:
1.
let mut mask = 0 as c_ulong;
for bit in bits.iter() {
mask |= *bit as c_ulong;
}
2.
for bit in vec!(...).iter() {
if res & *bit as c_ulong != 0 {
bits.push(*bit);
}
}
两种情况下的向量迭代向量都包含一个enum,比如:
#[allow(non_camel_case_types)]
#[deriving(PartialEq,Show)]
pub enum SomeEnum {
BLAH = 0x01,
...
}
但不幸的是,现在该代码会导致所有 *bit 表达式出现以下错误。
cannot move out of dereference of `&`-pointer
我不明白这个错误。为什么现在不允许?我有一个指向不可变向量的指针,其中枚举变量实际上只是int 值。
另外,我该如何解决?我知道第一种情况可以转换为使用.into_iter() - 没关系,之后我不需要那个向量。但是在第二个片段中,我实际上不能在.into_iter() 之后使用两次bit。虽然我只是第一次比较!
我在这里错过了一些琐碎的事情吗?
【问题讨论】: