我有一个结构体,其中包含一个f32的Vec:
struct MyStruct(Vec<f32>);
我想在MyStruct
上实现两个函数:
1.一个返回f32但 * 需要 * 借用self的函数
1.另一个函数,它根据第一个函数返回的值更改存储的f32。
impl MyStruct {
fn hello(&self) -> f32 {
0.0 // Just for the example, but the function needs to borrow &self
}
fn problem(&mut self) {
for number in &mut self.0 {
*number = self.hello();
}
}
}
我的目标是将MyStruct中的Vec中的f32更改为hello
返回的值。
但是,借用检查器告诉我:
cannot borrow `*self` as immutable because it is also borrowed as mutable
for number in &mut self.0 {
-----------
|
mutable borrow occurs here
mutable borrow later used here
*number = self.hello();
^^^^^^^^^^^^ immutable borrow occurs here
我期待着它,但我没有看到任何其他方法来做到这一点。
我试着不使用借用或可变变量,但它不起作用。任何帮助将不胜感激:)
1条答案
按热度按时间ui7jx7zq1#
从注解中可以看出,解决方案是每次索引Vec: