Dans Rust : quelle est la différence entre self et Self (minuscule et majuscule) ?
Bonjour à tous ! J'ai commencé à apprendre Rust et je suis tombé sur une chose étrange : dans le code, on rencontre souvent `self` et `Self`, mais ils sont utilisés différemment. Je suis confus.
Voici un exemple tiré du livre sur Rust que j'essaie de comprendre :
```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()
}
}
```
Je vois que dans `fn new`, on retourne `Self`, et dans `fn distance`, le paramètre `other` a le type `&Self`. À l'intérieur des méthodes, j'accède aux champs via `self.x`. Mais `self` et `Self` sont-ils la même chose ? Pourquoi sont-ils écrits différemment ?
Ma question : quelle est la différence fondamentale entre `self` (en minuscule) et `Self` (en majuscule) ? Quand faut-il utiliser l'un et quand faut-il utiliser l'autre ? Puis-je écrire directement le nom de la structure, par exemple `Point`, à la place de `Self` ? Et pourquoi à l'intérieur...