Avatar ·

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...