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

¡Reunamos todos los traits estándar que has aprendido creando un struct Point completamente funcional que se pueda depurar, mostrar elegantemente y comparar para comprobar la igualdad!

Organizarás tu código en dos archivos:

  • point.rs: Define un struct público Point con los campos públicos x y y (ambos i32). Tu Point debe admitir tres capacidades:
    • Impresión de depuración con {:?}. Deriva esto automatically
    • display fácil de usar con {} en el formato (x, y): impleméntalo manualmente using std::fmt::Display
    • Comparación de igualdad con ==: deriva PartialEq
  • main.rs: Incluye tu módulo point y crea dos instancias de Point using las entradas proporcionadas. Demuestra las tres capacidades imprimiendo el primer punto con formato de depuración, imprimiendo el segundo punto con formato de display 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 Object Oriented Programming

Practica por tu cuenta: Compilador de Rust online