Menu
Coddy logo textTech

Resumen - Punto imprimible

Parte de la sección Programación Orientada a Objetos del Journey de Rust de Coddy. Lección 39 de 61.

challenge icon

Desafío

Fácil

¡Reunamos todos los traits estándar que has aprendido creando una estructura Point completamente funcional que pueda depurarse, mostrarse de forma atractiva y compararse por igualdad!

Organizarás tu código en dos archivos:

  • point.rs: Define una estructura Point pública con campos x y y públicos (ambos i32). Tu Point debe admitir tres capacidades:
    • Impresión de depuración con {:?}. Derívala automáticamente
    • Visualización fácil de usar con {} en el formato (x, y): impleméntala manualmente usando std::fmt::Display
    • Comparación de igualdad con ==: deriva PartialEq
  • main.rs: Incluye tu módulo point y crea dos instancias de Point usando 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 del primer punto, seguidas de las coordenadas x e y del segundo punto. Convierte cada una a 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 Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Rust online