Utiliser un trait en paramètre
1. Introduction
On peut à présent chercher à avoir une fonction qui prend en paramètre un trait. En effet, cela permet d’avoir en réalité toutes sortes de structures éligibles pour être passées en paramètre. Dans notre exemple, on passerait un Animal en paramètre de la fonction, c’est-à-dire que l’on pourrait aussi bien avoir un Chat qu’un Chien. En science informatique, on parle parfois, pour désigner ce mécanisme, de transtypage.
2. Exemple de trait en paramètre Trait:en paramètre
Nous allons ajouter une fonction afficher dans notre exécutable client. Le but est d’appeler la méthode afficher du trait Animal. On nomme cette méthode afficher_trait :
pub fn afficher_trait(animal: &impl Animal) {
animal.afficher();
}
Cette manière d’écrire la fonction est particulièrement claire. Elle correspond à ce que l’on appelle du sucre syntaxique. Autrement dit, c’est une syntaxe plus intuitive, plus facilement utilisable que la syntaxe en théorie. En effet, en théorie, on l’écrirait ainsi :
pub fn afficher_trait<T: Animal>(animal: &T) {
animal.afficher();
}
C’est exactement la même chose : mais comme on le voit, la version « sucre syntaxique » est particulièrement intuitive.
Testons...