Menu
Coddy logo textTech

Draw 트레이트

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

challenge icon

챌린지

쉬움

문서 시스템(Document System) 구축을 시작해 봅시다! 이 프로젝트에서는 트레이트 객체(trait objects)를 사용하여 UI 컴포넌트를 렌더링하기 위한 유연한 프레임워크를 만들 것입니다. 그 기초는 별도의 모듈 파일에 Draw 트레이트를 정의하는 것부터 시작합니다.

코드를 정리하기 위해 두 개의 파일을 생성합니다:

  • draw.rs: &self를 매개변수로 받아 출력을 수행하는 draw라는 단일 메서드를 가진 공개(public) Draw 트레이트를 정의합니다. 이 트레이트는 모든 UI 컴포넌트가 충족해야 하는 계약 역할을 합니다.
  • main.rs: draw 모듈을 가져오고, 공개 text 필드(String 타입)를 가진 Label이라는 간단한 구조체를 만듭니다. Label에 대해 Draw 트레이트를 구현하여 draw()를 호출하면 레이블의 텍스트가 출력되도록 합니다.

메인 함수에서 Label 인스턴스를 생성하고 draw() 메서드를 호출하여 텍스트를 표시하세요.

다음과 같은 입력이 제공됩니다:

  • 레이블의 텍스트를 나타내는 문자열

출력은 한 줄에 레이블의 텍스트가 정확히 표시되어야 합니다.

직접 해보기

mod draw;

use draw::Draw;

// TODO: public 텍스트 필드(String)를 가진 Label이라는 이름의 public 구조체를 정의하세요.

// TODO: Label에 대해 Draw 트레이트를 구현하세요.
// draw 메서드는 레이블의 텍스트를 출력해야 합니다.

fn main() {
    let mut input = String::new();
    std::io::stdin().read_line(&mut input).expect("Failed to read line");
    let text = input.trim().to_string();

    // TODO: 입력받은 텍스트로 Label 인스턴스를 생성하세요.
    // TODO: 레이블에서 draw() 메서드를 호출하세요.
}

Object Oriented Programming의 모든 레슨