Zum Inhalt springen

Strukturen

struct Point {
x: i32,
y: i32,
}
fn main() {
let mut a = Point { x: 1, y: 2 };
a.x += 1;
let b = Point { y: 1, ..a };
a.x += 1;
println!("{}", b.x);
}

Die ..a-Syntax kopiert jedes Feld von a nach b (außer y), sodass die zweite Anweisung a.x += 1 keine Auswirkung auf b hat.


struct Point {
x: i32,
y: i32,
}
fn main() {
let mut p = Point { x: 1, y: 2 };
let x = &mut p.x;
let y = &mut p.y;
*x += 1;
*y += 1;
println!("{} {}", p.x, p.y);
}

Rust erkennt, dass .x sich auf ein anderes Objekt als .y bezieht, daher ist es gültig, gleichzeitige mutable Referenzen auf beide Felder zu nehmen.