Menu
Coddy logo textTech

Zusammenfassung – Druckbarer Punkt

Teil des Abschnitts Object Oriented Programming der Rust-Journey von Coddy — Lektion 39 von 61.

challenge icon

Aufgabe

Einfach

Lassen Sie uns alle Standard-Traits, die Sie gelernt haben, zusammenführen, indem wir eine voll funktionsfähige Point-Struktur erstellen, die debuggt, ansprechend angezeigt und auf Gleichheit verglichen werden kann!

Sie werden Ihren Code über zwei Dateien organisieren:

  • point.rs: Definieren Sie eine öffentliche Point-Struktur mit öffentlichen x- und y-Feldern (beide i32). Ihr Point sollte drei Fähigkeiten unterstützen:
    • Debug-Ausgabe mit {:?} — leiten Sie dies automatisch ab (derive)
    • Benutzerfreundliche Anzeige mit {} im Format (x, y) — implementieren Sie dies manuell mit std::fmt::Display
    • Gleichheitsvergleich mit == — leiten Sie PartialEq ab
  • main.rs: Binden Sie Ihr Point-Modul ein und erstellen Sie zwei Point-Instanzen unter Verwendung der bereitgestellten Eingaben. Demonstrieren Sie alle drei Fähigkeiten, indem Sie den ersten Punkt im Debug-Format ausgeben, den zweiten Punkt im Display-Format ausgeben und vergleichen, ob die beiden Punkte gleich sind.

Ihre Ausgabe sollte alle drei Trait-Fähigkeiten in Aktion zeigen:

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

Zum Beispiel mit den Eingaben 3, 5, 3, 5:

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

Und mit den Eingaben 10, 20, 5, 15:

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

Sie erhalten vier Eingaben: die x- und y-Koordinaten für den ersten Punkt, gefolgt von den x- und y-Koordinaten für den zweiten Punkt. Parsen Sie jede als i32.

Probier es selbst

mod point;

use point::Point;

fn main() {
    // Lies vier Eingaben ein: 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: Erstelle zwei Point-Instanzen unter Verwendung der Eingaben

    // TODO: Gib den ersten Punkt im Debug-Format {:?} aus
    // Format: "Debug: Point { x: ..., y: ... }"

    // TODO: Gib den zweiten Punkt im Display-Format {} aus
    // Format: "Display: (..., ...)"

    // TODO: Vergleiche die beiden Punkte und gib das Ergebnis aus
    // Format: "Equal: true" oder "Equal: false"
}

Alle Lektionen in Object Oriented Programming