Menu
Coddy logo textTech

Resumen - Punto imprimible

Parte de la sección Object Oriented Programming del Journey de Rust de Coddy — lección 39 de 61.

challenge icon

Desafío

Fácil

¡Vamos a reunir todos los traits estándar que has aprendido creando una estructura Point completa que se pueda depurar, mostrar bellamente y comparar para verificar su igualdad!

Organizarás tu código en dos archivos:

  • point.rs: Define una estructura Point pública con campos públicos x e y (ambos i32). Tu Point debe admitir tres capacidades:
    • Impresión de depuración con {:?} — deriva esto automáticamente
    • Visualización amigable para el usuario con {} en el formato (x, y) — implementa esto manualmente usando std::fmt::Display
    • Comparación de igualdad con == — deriva PartialEq
  • main.rs: Importa tu módulo point y crea dos instancias de Point utilizando las entradas proporcionadas. Demuestra las tres capacidades imprimiendo el primer punto con el formato de depuración, imprimiendo el segundo punto con el formato de visualización y comparando si los dos puntos son iguales.

Tu salida debe mostrar las tres capacidades de los traits en acción:

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

Por ejemplo, con las entradas 3, 5, 3, 5:

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

Y con las entradas 10, 20, 5, 15:

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

Recibirás cuatro entradas: las coordenadas x e y para el primer punto, seguidas de las coordenadas x e y para el segundo punto. Analiza cada una como i32.

Pruébalo tú mismo

mod point;

use point::Point;

fn main() {
    // Lee cuatro entradas: 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: Crea dos instancias de Point usando las entradas

    // TODO: Imprime el primer punto usando el formato de depuración {:?}
    // Formato: "Debug: Point { x: ..., y: ... }"

    // TODO: Imprime el segundo punto usando el formato de visualización {}
    // Formato: "Display: (..., ...)"

    // TODO: Compara los dos puntos e imprime el resultado
    // Formato: "Equal: true" o "Equal: false"
}

Todas las lecciones de Object Oriented Programming