Avatar ·

Wie implementiert man das Add-Trait für eine Referenz auf eine Struktur in Rust?

Hallo! Ich lerne Rust und versuche, den Operator `+` für meine Struktur zu überladen. Ich habe eine Struktur `Point` mit zwei Feldern `x` und `y`. Ich möchte, dass man zwei Instanzen von `Point` per Referenz addieren kann, um das Eigentum nicht zu verschieben. Hier ist mein Code: ```rust struct Point { x: i32, y: i32, } impl std::ops::Add for Point { type Output = Point; fn add(self, other: Point) -> Point { Point { x: self.x + other.x, y: self.y + other.y } } } ``` Das funktioniert, aber es konsumiert `self` und `other` by value. Ich möchte, dass man schreiben kann: ```rust let a = Point { x: 1, y: 2 }; let b = Point { x: 3, y: 4 }; let c = &a + &b; ``` Ich habe versucht, so zu schreiben: ```rust impl std::ops::Add for &Point { type Output = Point; fn add(self, other: &Point) -> Point { Point { x: self.x + other.x, y: self.y + other.y } } } ``` Aber der Compiler beschwert sich über die Lebensdauer (lifetime). Der Fehler lautet ungefähr: `mis