我正在为一个包含Vec
的结构编写一个函数,尝试遍历该Vec
:
我正在编写一个函数来处理一个包含Vec
的结构体,在函数中我试图对Vec
进行迭代。
struct Object {
pub v: Vec<f32>,
}
impl Object {
pub fn sum(&self) -> f32 {
let mut sum = 0.0;
for e in self.v {
sum += e;
}
sum
}
}
然而我遇到了以下错误:
error[E0507]: cannot move out of borrowed content
--> src/lib.rs:8:18
|
8 | for e in self.v {
| ^^^^ cannot move out of borrowed content
我的理解是由于self
被借用且for循环迭代尝试将v
的元素移动到e
中,因此出现了这个错误。
从错误代码中,我读到一个潜在的解决方案是取得所有权,但我不太确定如何做到这一点。
我并没有试图修改向量或其元素。 我只想使用这些元素来运行一些计算。
self.struct_member
时,Rust 编译器将其视为(*self).struct_member
并移出结构体?还是只适用于for x in self.v
结构? - illeyezurCopy
类型,但这是因为Copy
类型不会在一般情况下移动)。 - Linear