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?