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

Réunissons tous les traits standard que tu as appris en créant une structure Point complète, qui peut être déboguée, affichée élégamment et comparée pour vérifier l'égalité !

Tu organiseras ton code dans deux fichiers :

  • point.rs : Define une structure Point public avec les x et y fields public (both i32). Ton Point should prendre en charge trois fonctionnalités :
    • Affichage de débogage avec {:?}. Déduis-le automatiquement
    • Affichage convivial avec {} au format (x, y) : implémente-le manuellement using std::fmt::Display
    • Comparaison d'égalité avec == : déduis PartialEq
  • main.rs : Importe ton module point et crée deux instances de Point using les inputs fournis. Démontre les trois fonctionnalités en affichant le first point avec le format de débogage, en affichant le second point avec le format d'affichage et en comparant si les deux points sont égaux.

Ta sortie should montrer les trois fonctionnalités des traits en action :

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

Par exemple, avec les inputs 3, 5, 3, 5 :

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

Et avec les inputs 10, 20, 5, 15 :

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

Tu recevras four inputs : les coordonnées x et y du first point, suivies des coordonnées x et y du second point. Effectue le parse de chacune en 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

Entraînez-vous par vous-même : Compilateur Rust en ligne