Methods 如何在方法中将结构的数据分配给self?

Methods 如何在方法中将结构的数据分配给self?,methods,reference,rust,Methods,Reference,Rust,我正在尝试修改临时存储到另一个变量中的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

我正在尝试修改临时存储到另一个变量中的
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?
    }
}
我得到一个错误:

错误[E0308]:类型不匹配
-->src/lib.rs:14:16
|
14 | self=a;//如何将数据从变量复制到self?
|                ^
|                |
|应为多个结构,找到结构'A(&M)`
帮助:考虑在这里随意借用:'MUT A '
|
=注意:应为类型“&&mut A`
找到'A型`
我试过
self=&a
self=&mut a
,都没用。我应该如何从这行的
a
将数据复制到
self


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

您需要取消对
self
的引用:

*self = a;
self
没有什么独特之处,或者这是一种方法。对于替换值的任何可变引用,情况也是如此

另见:


您需要解除对自身的引用:

*self = a;
self
没有什么独特之处,或者这是一种方法。对于替换值的任何可变引用,情况也是如此

另见: