Avatar ·

Was sind die genauen Regeln für automatisches Dereferenzieren (auto-dereferencing) in Rust?

Hallo zusammen! Ich habe vor kurzem angefangen, Rust zu lernen, und komme mit dem automatischen Dereferenzieren (auto-dereferencing) nicht klar. In der Dokumentation steht, dass der Compiler Referenzen automatisch dereferenziert, wenn nötig, aber ich bin ständig verwirrt. Hier ist ein einfaches Beispiel. Ich habe eine Struktur `Point` mit einer Methode `distance_from_origin`. Ich erstelle eine Instanz, dann eine Referenz darauf, dann eine Referenz auf die Referenz, und versuche, die Methode aufzurufen: ```rust struct Point { x: f64, y: f64, } impl Point { fn distance_from_origin(&self) -> f64 { (self.x.powi(2) + self.y.powi(2)).sqrt() } } fn main() { let p = Point { x: 3.0, y: 4.0 }; let r1 = &p; // &Point let r2 = &&p; // &&Point let r3 = &&&p; // &&&Point println!("{}", p.distance_from_origin()); // Funktioniert println!("{}", r1.distance_from_origin()); // Funktioniert! println!("{}", r2.distance_from_origin()); // Funktioniert!! println!("{}", r3.distance_from_origin()); // Funktioniert auch }