Menu
Coddy logo textTech

Structures tuple

Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 25 sur 66.

Alors que les structures classiques utilisent des champs nommés, Rust propose un autre type appelé structs tuples. Celles-ci offrent une manière plus concise de créer des types personnalisés lorsque vous n'avez pas besoin de nommer chaque champ individuellement.

Une structure tuple combine les avantages de la création d'un nouveau type avec la simplicité d'un tuple. Vous la définissez en utilisant le mot-clé struct suivi du nom du type et des types de champs entre parenthèses :

struct Color(i32, i32, i32);

Cela crée un type Color qui contient trois valeurs i32, représentant des valeurs de couleur RVB. Contrairement aux structures régulières, vous ne spécifiez pas de noms de champs - vous accédez aux valeurs par leur position, tout comme avec les tuples.

Pour créer une instance d'une structure tuple (tuple struct), vous fournissez les valeurs entre parenthèses :

let red = Color(255, 0, 0);

Vous pouvez accéder aux champs individuels en utilisant la notation par points avec l'index du champ : red.0 vous donne la première valeur, red.1 la deuxième, et ainsi de suite.

challenge icon

Défi

Facile

Vous recevrez trois entrées : une valeur rouge (sous forme d'entier), une valeur verte (sous forme d'entier) et une valeur bleue (sous forme d'entier). Définissez une structure de tuple Color qui contient trois valeurs i32 représentant les composantes de couleur RVB. Créez une instance de cette structure de tuple en utilisant les valeurs d'entrée, puis accédez à chaque composante de couleur et affichez-la en utilisant la notation par index.

Exigences :

  • Définissez une structure de tuple Color avec trois champs i32
  • Lisez la première entrée et convertissez-la en i32 pour la valeur rouge
  • Lisez la deuxième entrée et convertissez-la en i32 pour la valeur verte
  • Lisez la troisième entrée et convertissez-la en i32 pour la valeur bleue
  • Créez une instance de la structure de tuple Color avec ces valeurs
  • Accédez à chaque champ en utilisant la notation par point avec des indices (0, 1, 2) et affichez les informations de couleur dans le format exact indiqué ci-dessous

Entrée :

  • Première ligne : Valeur rouge sous forme d'entier (par exemple, 255)
  • Deuxième ligne : Valeur verte sous forme d'entier (par exemple, 128)
  • Troisième ligne : Valeur bleue sous forme d'entier (par exemple, 0)

Sortie :

  • Première ligne : Red: [red_value]
  • Deuxième ligne : Green: [green_value]
  • Troisième ligne : Blue: [blue_value]

Aide-mémoire

Une structure tuple (tuple struct) est une structure sans champs nommés. Elle combine les avantages de la création d'un nouveau type avec la simplicité d'un tuple.

Définissez une structure tuple en utilisant le mot-clé struct suivi du nom du type et des types de champs entre parenthèses :

struct Color(i32, i32, i32);

Créez une instance en fournissant des valeurs entre parenthèses :

let red = Color(255, 0, 0);

Accédez aux champs en utilisant la notation par point avec l'index du champ :

red.0  // première valeur
red.1  // deuxième valeur
red.2  // troisième valeur

Essayez vous-même

use std::io;

// TODO: Définissez votre struct tuple Color ici

fn main() {
    // Lire la valeur rouge
    let mut red_input = String::new();
    io::stdin().read_line(&mut red_input).expect("Failed to read line");
    let red: i32 = red_input.trim().parse().expect("Invalid input");
    
    // Lire la valeur verte
    let mut green_input = String::new();
    io::stdin().read_line(&mut green_input).expect("Failed to read line");
    let green: i32 = green_input.trim().parse().expect("Invalid input");
    
    // Lire la valeur bleue
    let mut blue_input = String::new();
    io::stdin().read_line(&mut blue_input).expect("Failed to read line");
    let blue: i32 = blue_input.trim().parse().expect("Invalid input");
    
    // TODO: Créer une instance de la struct tuple Color en utilisant les valeurs d'entrée
    
    // TODO: Accéder à chaque composant de couleur et l'afficher en utilisant la notation par index
    // Format: Red: [value], Green: [value], Blue: [value]
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow