Avatar ·

In Rust: Was ist der Unterschied zwischen self und Self (Groß- und Kleinschreibung)?

Hallo zusammen! Ich habe angefangen, Rust zu lernen, und bin auf eine seltsame Sache gestoßen: Im Code kommen oft `self` und `Self` vor, aber sie werden unterschiedlich verwendet. Ich bin verwirrt. Hier ist ein Beispiel aus dem Rust-Buch, das ich zu verstehen versuche: ```rust struct Point { x: f64, y: f64, } impl Point { fn new(x: f64, y: f64) -> Self { Self { x, y } } fn distance(&self, other: &Self) -> f64 { let dx = self.x - other.x; let dy = self.y - other.y; (dx * dx + dy * dy).sqrt() } } ``` Ich sehe, dass in `fn new` `Self` zurückgegeben wird, und in `fn distance` hat der Parameter `other` den Typ `&Self`. Innerhalb der Methoden greife ich über `self.x` auf die Felder zu. Aber sind `self` und `Self` nicht dasselbe? Warum werden sie unterschiedlich geschrieben? Meine Frage: Was ist der grundlegende Unterschied zwischen `self` (kleingeschrieben) und `Self` (großgeschrieben)? Wann sollte man das eine und wann das andere verwenden? Kann ich statt `Self` direkt den Strukturnamen schreiben, z.B. `Point`? Und warum innen?