Draw 트레이트
Coddy Rust 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 61개 중 49번째.
챌린지
쉬움문서 시스템(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() 메서드를 호출하세요.
}