gpt4 book ai didi

methods - 如何在方法中将结构的数据分配给自身?

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

我正在尝试修改临时存储到另一个变量中的 self。在最后一步,我想将变量中的所有数据复制到 self 中。

struct A {
x: i32,
}

impl A {
fn new() -> Self {
Self { x: 0 }
}

fn change(&mut self) {
let mut a = Self::new();
a.x += 1;

self = a; // How to copy data from a variable into self?
}
}

我得到错误:

error[E0308]: mismatched types
--> src/lib.rs:14:16
|
14 | self = a; // How to copy data from a variable into self?
| ^
| |
| expected &mut A, found struct `A`
| help: consider mutably borrowing here: `&mut a`
|
= note: expected type `&mut A`
found type `A`

我试过self = &aself = &mut a,都没有用。我应该如何将数据从这一行的 a 复制到 self

我知道我的示例不是最优的,因为我可以只写 self.x += 1。在我的完整项目中,我对包含 self 本身的 a 进行了艰苦的计算,因此我需要严格复制最后一行。

最佳答案

您需要取消引用 self:

*self = a;

self 没有什么独特之处,也没有什么特别的,因为这是一个方法。对于要替换值的任何 可变引用也是如此。

另见:

关于methods - 如何在方法中将结构的数据分配给自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54543286/

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