Points d’architecture impliquant les traits

1. Traits, génériques et structures

Selon le contexte fonctionnel et ce que l’on souhaite faire, nous avons à présent plusieurs manières de proposer une architecture impliquant traits et génériques.

Imaginons un trait nous permettant de définir une course cycliste d’un jour :

// Course d'un jour. 
trait course_jour { 
 
} 

On aura alors plusieurs structures à même d’implémenter ce trait. On peut imaginer les structures ParisRoubaix, ParisTroyes, RedonRedon, etc.

Fort de cette première définition, on se dit que l’on peut construire à présent une structure à même d’accueillir une course par étapes. Pour cela, la structure inclurait un vecteur contenant chaque étape. Comment peut-on combiner la structure Course par étapes avec le trait Course d’un jour ?

Première proposition :

// Course par étapes. 
struct course_étapes<J : course_jour> { 
   etapes : Vec<J> 
}  

On a un vecteur contenant plusieurs courses, mais toujours issues de la même structure. Ce n’est pas idéal d’avoir n fois Paris-Auxerre à courir. En effet, on a forcément dans notre vecteur uniquement des instances d’une même structure. 

Deuxième proposition :

// Course par étapes 2. 
struct course_étapes...
Pour consulter la suite, découvrez le livre suivant :
couv_EIRUST.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Un trait comme valeur de retour
Suivant
Introduction