Menu
Coddy logo textTech

Récapitulatif - Point affichable

Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 39 sur 61.

challenge icon

Défi

Facile

Rassemblons tous les traits standards que vous avez appris en créant une structure Point complète qui peut être déboguée, affichée élégamment et comparée pour l'égalité !

Vous organiserez votre code sur deux fichiers :

  • point.rs : Définissez une structure Point publique avec des champs publics x et y (tous deux de type i32). Votre Point doit supporter trois capacités :
    • L'affichage de débogage avec {:?} — dérivez cela automatiquement
    • L'affichage convivial pour l'utilisateur avec {} au format (x, y) — implémentez cela manuellement en utilisant std::fmt::Display
    • La comparaison d'égalité avec == — dérivez PartialEq
  • main.rs : Importez votre module point et créez deux instances de Point en utilisant les entrées fournies. Démontrez les trois capacités en affichant le premier point avec le format de débogage, en affichant le second point avec le format d'affichage (display), et en comparant si les deux points sont égaux.

Votre sortie doit montrer les trois capacités des traits en action :

Debug: Point { x: {x1}, y: {y1} }
Display: ({x2}, {y2})
Equal: {true/false}

Par exemple, avec les entrées 3, 5, 3, 5 :

Debug: Point { x: 3, y: 5 }
Display: (3, 5)
Equal: true

Et avec les entrées 10, 20, 5, 15 :

Debug: Point { x: 10, y: 20 }
Display: (5, 15)
Equal: false

Vous recevrez quatre entrées : les coordonnées x et y pour le premier point, suivies des coordonnées x et y pour le second point. Analysez chacune comme un i32.

Essayez vous-même

mod point;

use point::Point;

fn main() {
    // Lire quatre entrées : x1, y1, x2, y2
    let mut input = String::new();
    std::io::stdin().read_line(&mut input).expect("Failed to read line");
    let x1: i32 = input.trim().parse().expect("Invalid input");

    input.clear();
    std::io::stdin().read_line(&mut input).expect("Failed to read line");
    let y1: i32 = input.trim().parse().expect("Invalid input");

    input.clear();
    std::io::stdin().read_line(&mut input).expect("Failed to read line");
    let x2: i32 = input.trim().parse().expect("Invalid input");

    input.clear();
    std::io::stdin().read_line(&mut input).expect("Failed to read line");
    let y2: i32 = input.trim().parse().expect("Invalid input");

    // TODO: Créer deux instances de Point en utilisant les entrées

    // TODO: Afficher le premier point en utilisant le format de débogage {:?}
    // Format: "Debug: Point { x: ..., y: ... }"

    // TODO: Afficher le second point en utilisant le format d'affichage {}
    // Format: "Display: (..., ...)"

    // TODO: Comparer les deux points et afficher le résultat
    // Format: "Equal: true" ou "Equal: false"
}

Toutes les leçons de Object Oriented Programming