Rust में ऑटो-डीरेफरेंसिंग (auto-dereferencing) के सटीक नियम क्या हैं?
सभी को नमस्ते! मैंने हाल ही में Rust सीखना शुरू किया है और ऑटो-डीरेफरेंसिंग (auto-dereferencing) को समझ नहीं पा रहा हूँ। दस्तावेज़ीकरण में कहा गया है कि कंपाइलर ज़रूरत पड़ने पर खुद ही संदर्भों को डीरेफरेंस करता है, लेकिन मैं लगातार भ्रमित हो जाता हूँ।
यहाँ एक सरल उदाहरण है। मेरे पास `Point` नामक एक struct है जिसमें `distance_from_origin` method है। मैं एक instance बनाता हूँ, फिर उसका reference, फिर reference का reference, और method को call करने की कोशिश करता हूँ:
```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()); // काम करता है
println!("{}", r1.distance_from_origin()); // काम करता है!
println!("{}", r2.distance_from_origin()); // काम करता है!!
println!("{}", r3.distance_from_origin()); // यह भी काम करता है
}