gpt4 book ai didi

rust - 替换结构字段时为 "cannot move out of borrowed content"

转载 作者:行者123 更新时间:2023-11-29 08:32:08 25 4
gpt4 key购买 nike

<分区>

考虑这个例子:

struct Item {
x: u32,
}

impl Item {
pub fn increment(self, amount: u32) -> Self {
Item { x: self.x + amount }
}
}

struct Container {
item: Item,
}

impl Container {
pub fn increment_item(&mut self, amount: u32) {
// This line causes "cannot move out of borrowed content"
self.item = self.item.increment(amount);
}
}

如您所见,Item.increment 使用项目并返回一个新实例。

Container.increment_item 中,我想用 Item.increment 返回的项目替换当前项目,但编译器用 cannot move out 对我大喊大叫借用内容错误。

Container.increment_item selfmut 所以我可以改变它的字段,我不明白为什么编译器不允许我来做。

我知道我可以让 Container.increment_item 消耗 self 并返回一个新对象,就像 Item.increment 那样,而且它有效,但我想了解为什么会出现错误,以及当我真的无法使用容器时如何修复它。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com