Я пытаюсь изменить 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 = &a
и self = &mut a
, это не сработало.Как мне скопировать данные в self
из a
в этой строке?
Я знаю, что мой пример не оптимален, потому что я мог бы просто написать self.x += 1
.В моем полном проекте у меня сложные расчеты с a
, которые включают сам self
, поэтому мне нужно строго скопировать в последнюю строку.