Tri facile avec une closure

Pour démontrer l’intérêt d’une closure pour le tri, prenons l’exemple suivant. On a une structure Individu qui contient deux champs : la chaîne de caractères relative au prénom et une valeur entière qui représente l’âge :

struct Individu { 
 
    prenom : String, 
    age : i32 
} 
 
impl Individu { 
 
    pub fn creer(prenom : String, age : i32) -> Individu { 
        Individu { prenom : prenom, age : age } 
    } 
} 

On crée un vecteur d’instances de cette structure. On voudrait pouvoir facilement le trier selon l’âge des individus (du plus jeune au plus âgé). Pour cela, on connaît surtout un procédé particulièrement adéquat : implémenter le trait qui convient.

On déclare l’utilisation du trait en question :

use std::cmp::Ordering; Ordering 

On ajoute la ligne qui convient, relative à la structure elle-même ainsi que le trait Debug pour pouvoir facilement afficher du contenu dans la console :

#[derive(Eq, Debug)] 

Nous sommes alors prêts à fournir une implémentation à même de trier des individus selon leur âge :

impl Ord for Individu { 
    fn cmp(&self, autre: &Self) -> Ordering...
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
Première utilisation d'une closure
Suivant
Les closures, résumé des premières notions