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
没有什么独特之处,或者这是一种方法。对于替换值的任何可变引用,情况也是如此
另见: