Menu
Coddy logo textTech

Zusammenfassung – Druckbarer Punkt

Teil des Abschnitts Objektorientierte Programmierung der Rust-Journey von Coddy. Lektion 39 von 61.

challenge icon

Aufgabe

Einfach

Führe alle Standard-Traits, die du kennengelernt hast, zusammen, indem du eine vollständig ausgestattete Point-Struktur erstellst, die debuggt, ansprechend dargestellt und auf Gleichheit verglichen werden kann!

Du organisierst deinen Code auf zwei Dateien verteilt:

  • point.rs: Definiere eine öffentliche Point-Struktur mit öffentlichen x- und y-Feldern (beide i32). Deine Point-Struktur soll drei Fähigkeiten unterstützen:
    • Debug-Ausgabe mit {:?}. Leite dies automatisch ab
    • Benutzerfreundliche Darstellung mit {} im Format (x, y): Implementiere dies manuell mit std::fmt::Display
    • Gleichheitsvergleich mit ==: Leite PartialEq ab
  • main.rs: Binde dein point-Modul ein und erstelle mithilfe der bereitgestellten Eingaben zwei Point-Instanzen. Demonstriere alle drei Fähigkeiten, indem du den ersten Punkt im Debug-Format ausgibst, den zweiten Punkt im Anzeigeformat ausgibst und vergleichst, ob die beiden Punkte gleich sind.

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

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

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

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

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

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

Du erhältst vier Eingaben: die x- und y-Koordinaten des ersten Punkts, gefolgt von den x- und y-Koordinaten des zweiten Punkts. Parse jede Eingabe als i32.

Probier es selbst

mod point;

use point::Point;

fn main() {
    // Lies vier Eingaben: 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 mit den 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 Objektorientierte Programmierung

Übe selbstständig: Online-Rust-Compiler