Avatar ·

在 Rust 中:self 和 Self(小写和大写)有什么区别?

大家好!我开始学习 Rust,遇到了一件奇怪的事:代码中经常出现 `self` 和 `Self`,但它们的用法不同。我搞混了。 下面是我试图理解的 Rust 书中的一个例子: ```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() } } ``` 我看到在 `fn new` 中返回的是 `Self`,而在 `fn distance` 中参数 `other` 的类型是 `&Self`。同时在方法内部我通过 `self.x` 访问字段。但 `self` 和 `Self` 不是一回事吗?为什么它们写法不同? 我的问题是:`self`(小写)和 `Self`(大写)之间的根本区别是什么?什么时候该用哪一个?能否直接用结构体名称(例如 `Point`)代替 `Self`?以及为什么在方法内部...