Enums en français

Qu'est-ce qu'un Enum ?

Les enums, abréviation d'énumérations, représentent un type de données personnalisé qui permet de sélectionner une valeur parmi une liste prédéfinie d'options connexes. Ils sont particulièrement utiles pour modéliser des concepts classés en différentes catégories ou états. L'utilisation d'enums peut considérablement améliorer la lisibilité du code et faciliter la gestion de divers scénarios de manière organisée.

Il est important de noter que les enums diffèrent des structs, car ils ne stockent pas de données associées à chaque variante. Les enums servent à définir un type avec des valeurs distinctes, tandis que les structs permettent de créer des structures de données personnalisées pouvant contenir différents champs.

Syntaxe des Enums

La déclaration des enums dans Rust commence par le mot-clé enum, suivi du nom de l'enum. Par exemple :

enum MonEnum {
  OptionUn,
  OptionDeux,
  OptionTrois,
}

Ensuite, vous pouvez accéder aux valeurs d'un enum en utilisant la notation ::. Par exemple, MonEnum::OptionUn fait référence à la variante OptionUn de l'enum MonEnum. Cette référence peut être assignée à une variable comme suit :

let option_un = MonEnum::OptionUn;

Types de Données dans les Enums

Les enums en Rust sont flexibles et peuvent stocker différents types de données. Ils ne se limitent pas aux chaînes de caractères ; ils permettent divers types de données, notamment :

  • Variantes sans données associées : Ce sont des variants simples sans données supplémentaires.
  • Variantes avec données associées : Ces variantes peuvent contenir des données de types divers, comme des entiers, des flottants, ou des booléens.
  • Variantes de type tuple : Ces variantes stockent des tuples en tant que données associées.
  • Variantes de type struct : Ces variantes peuvent contenir des données structurées, permettant ainsi l'utilisation de structures de données plus complexes.

Exemple de Enum

Voici un exemple qui crée un enum nommé Avengers contenant des variantes sans données associées. Ensuite, des variables sont créées pour chaque variante de l'enum Avengers. Enfin, la fonction println!() est utilisée pour afficher chaque variable dans la console :

fn main() {
  // Définir l'enum Avengers
  #[derive(Debug)]
enum Avengers {
    IronMan,
    Thor,
    Hulk,
  }

  // Accéder aux variantes de l'enum
  let iron_man = Avengers::IronMan;
  let thor = Avengers::Thor;
  let hulk = Avengers::Hulk;

  // Afficher les valeurs de l'enum
  println!("{:?}", iron_man);
  println!("{:?}", thor);
  println!("{:?}", hulk);
}

L'exécution de ce code affichera :

IronMan
Thor
Hulk