Menu
CoddyTech

Thành phần văn bản

Thuộc phần Lập trình hướng đối tượng trong hành trình Rust của Coddy. Bài học 50 trên 61.

challenge icon

Thử thách

Dễ

Dựa trên trait Draw bạn đã tạo ở bài học trước, hãy thêm thành phần giao diện người dùng thực sự đầu tiên: TextField. Thành phần này sẽ đại diện cho một phần tử hiển thị văn bản trong hệ thống tài liệu của chúng ta.

Bạn sẽ mở rộng dự án bằng một tệp module mới:

  • draw.rs: Giữ lại trait Draw từ thử thách trước.
  • text_field.rs: Tạo một struct TextField có trường content công khai, với kiểu String. Triển khai trait Draw cho TextField để khi gọi draw(), chương trình in văn bản theo định dạng cụ thể: Text: {content}
  • main.rs: Đưa cả hai module vào và tạo một instance TextField. Gọi phương thức draw() của instance đó để hiển thị thành phần.

Hãy nhớ rằng module text_field cần sử dụng trait Draw từ module draw. Bạn có thể truy cập trait này bằng crate::draw::Draw vì cả hai module đều thuộc cùng một crate.

Đầu vào sau sẽ được cung cấp:

  • Một chuỗi đại diện cho nội dung của trường văn bản

Đầu ra của bạn phải theo chính xác định dạng sau:

Text: Hello World

Tự làm thử

mod draw;
mod text_field;

use draw::Draw;

pub struct Label {
    pub text: String,
}

impl Draw for Label {
    fn draw(&self) {
        println!("{}", self.text);
    }
}

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

    // TODO: Tạo một instance của TextField rồi gọi draw() trên instance đó
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Rust online