impl |
Implémentation |
|---|---|
| Rust | |
Syntaxe
|
impl nomdelaclasse { definition } |
Paramètres
| Nom | Description |
|---|---|
| nomdelaclasse | Ce paramètre permet de spécifier le nom de la structure, de l'énumération ou du trait à implémenter. |
| definition | Ce paramètre permet de définir les fonctions, méthodes ou constantes associées au type implémenté. |
Description
Ce mot réservé permet de mettre en oeuvre une fonctionnalité inhérente ou caractéristique.
Remarques
Implémentations de fonctionnalités pour un type, ou type implémentant une fonctionnalité.
Le mot clef impl a deux utilisations :
- Un bloc impl est un élément utilisé pour implémenter une fonctionnalité pour un type.
- Un trait impl dans une position de type peut être utilisé pour désigner un type implémentant un trait appelé Trait.
Implémentation de fonctionnalités pour un type
Le mot clef impl sert principalement à définir des implémentations de types. Les implémentations inhérentes sont autonomes, tandis que les implémentations de traits servent à implémenter des traits pour les types, ou d'autres traits.
Une implémentation se compose de définitions de fonctions et de constantes. Une fonction définie dans un bloc impl peut être autonome, ce qui signifie qu'elle sera appelée comme Vec::new(). Si la fonction prend self, &self ou &mut self comme premier paramètre, elle peut également être appelée en utilisant la syntaxe d'appel de méthode, une fonctionnalité familière à tout programmeur orienté objet, comme vec.len().
Implémentations inhérentes
Peu importe où une implémentation inhérente est définie ; sa fonctionnalité est concernée quel que soit le type d'implémentation.
Implémentations de Trait
Peu importe où l'implémentation d'un trait est définie ; ses fonctionnalités peuvent être intégrées dans la portée en important le trait qu'il implémente.
Désignation d'un type implémentant une fonctionnalité
Le mot clef impl est également utilisé dans la syntaxe impl Trait, pouvant être interprétée comme « tout type concret implémentant un trait». Il peut être utilisé comme type de déclaration de variable, en position d'argument ou en position de retour. Un cas d'utilisation pertinent est l'utilisation de fermetures, dont les types sont innommables.