Ответ 1
Вам нужно использовать &mut self
вместо &self
:
struct Point {
x: int,
y: int,
}
impl Point {
fn up(&mut self) {
self.y += 1;
}
}
fn main() {
let mut p = Point { x: 0, y: 0 };
p.up();
}
В Rust изменчивость наследуется: владелец данных решает, изменяется ли значение или нет. Однако ссылки не подразумевают права собственности, и, следовательно, они могут быть неизменными или изменяться. Вы должны прочитать официальную книгу , которая объясняет все эти основные понятия.