functions data rust mutable

functions - rust data types



¿Cómo puedo mutar el campo de una estructura a partir de un método? (1)

&mut self usar &mut self lugar de &self y hacer que la variable p mutable:

struct Point { x: i32, y: i32, } impl Point { fn up(&mut self) { // ^^^ Here self.y += 1; } } fn main() { let mut p = Point { x: 0, y: 0 }; // ^^^ And here p.up(); }

En Rust, la mutabilidad se hereda: el propietario de los datos decide si el valor es mutable o no. Sin embargo, las referencias no implican propiedad y, por lo tanto, pueden ser inmutables o mutables. Debería leer el libro oficial que explica todos estos conceptos básicos.

Quiero hacer esto:

struct Point { x: i32, y: i32, } impl Point { fn up(&self) { self.y += 1; } } fn main() { let p = Point { x: 0, y: 0 }; p.up(); }

Pero este código arroja un error de compilación:

error[E0594]: cannot assign to field `self.y` of immutable binding --> src/main.rs:8:9 | 7 | fn up(&self) { | ----- use `&mut self` here to make mutable 8 | self.y += 1; | ^^^^^^^^^^^ cannot mutably borrow field of immutable binding