gpt4 book ai didi

rust - 如何使用消耗该成员本身的成员方法替换结构成员?

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

<分区>

我有一个枚举,它可能包含一个向量。我为枚举实现了一个方法,它可以生成一个新的枚举,它在以前的枚举中重用相同的向量(我不想复制向量)。生成新的枚举后,我不会再使用以前的枚举,所以我将此方法实现为 fn (self),它将获得枚举的所有权。

然后我把枚举放在一个结构中,我想用我刚刚实现的枚举的方法来替换结构中的枚举。但是我得到了这个错误:

error[E0507]: cannot move out of borrowed content
--> src/lib.rs:22:18
|
22 | self.0 = self.0.get_a_new_foo();
| ^^^^^^ cannot move out of borrowed content

有什么方法可以修复我的代码吗?

enum Foo {
A,
B(Vec<u32>),
}

impl Foo {
fn get_a_new_foo(self) -> Foo {
match self {
Foo::A => Foo::B(vec![]),
Foo::B(mut v) => {
let len = v.len() as u32;
v.push(len - 1);
Foo::B(v)
}
}
}
}

struct Bar(Foo);
impl Bar {
fn replace_foo(&mut self) -> () {
self.0 = self.0.get_a_new_foo();
}
}

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