Menu
Coddy logo textTech

요약 - 출력 가능한 Point

Coddy Rust 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 61개 중 39번째.

challenge icon

챌린지

쉬움

디버깅이 가능하고, 아름답게 표시되며, 동일성 비교가 가능한 완전한 기능을 갖춘 Point 구조체를 만들어 지금까지 배운 모든 표준 트레이트들을 하나로 모아봅시다!

코드는 두 개의 파일로 구성됩니다:

  • point.rs: 공용 xy 필드(둘 다 i32)를 가진 공용 Point 구조체를 정의합니다. Point는 다음 세 가지 기능을 지원해야 합니다:
    • {:?}를 사용한 디버그 출력 — 이를 자동으로 파생(derive)하세요.
    • (x, y) 형식의 {}를 사용한 사용자 친화적 표시 — std::fmt::Display를 사용하여 수동으로 구현하세요.
    • ==를 사용한 동일성 비교 — PartialEq를 파생하세요.
  • main.rs: point 모듈을 가져와 제공된 입력을 사용하여 두 개의 Point 인스턴스를 생성합니다. 첫 번째 포인트는 디버그 형식으로 출력하고, 두 번째 포인트는 표시 형식으로 출력하며, 두 포인트가 같은지 비교하여 세 가지 기능을 모두 시연하세요.

출력은 세 가지 트레이트 기능이 작동하는 모습을 보여주어야 합니다:

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

예를 들어, 입력이 3, 5, 3, 5인 경우:

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

그리고 입력이 10, 20, 5, 15인 경우:

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

네 개의 입력을 받게 됩니다: 첫 번째 포인트의 x 및 y 좌표, 이어서 두 번째 포인트의 x 및 y 좌표입니다. 각각을 i32로 파싱하세요.

직접 해보기

mod point;

use point::Point;

fn main() {
    // 네 개의 입력값 읽기: 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: 입력값을 사용하여 두 개의 Point 인스턴스 생성

    // TODO: 디버그 형식 {:?}을 사용하여 첫 번째 포인트 출력
    // 형식: "Debug: Point { x: ..., y: ... }"

    // TODO: 디스플레이 형식 {}을 사용하여 두 번째 포인트 출력
    // 형식: "Display: (..., ...)"

    // TODO: 두 포인트를 비교하고 결과 출력
    // 형식: "Equal: true" 또는 "Equal: false"
}

Object Oriented Programming의 모든 레슨