Menu
CoddyTech

文本组件

本课属于 Coddy Rust 学习旅程的“面向对象编程”单元。第 50 课,共 61 课。

challenge icon

挑战

简单

基于你在上一课中创建的 Draw trait,我们来添加第一个真正的 UI 组件:TextField。这个组件将在文档系统中表示一个文本显示元素。

你需要在项目中添加一个新的模块文件:

  • draw.rs:保留你在上一个挑战中创建的 Draw trait。
  • text_field.rs:创建一个 TextField 结构体,其中包含一个公开的 content 字段(类型为 String)。为 TextField 实现 Draw trait,使调用 draw() 时按特定格式打印文本:Text: {content}
  • main.rs:引入这两个模块并创建一个 TextField 实例。调用它的 draw() 方法来渲染该组件。

请记住,text_field 模块需要使用来自 draw 模块的 Draw trait。由于这两个模块都属于同一个 crate,你可以通过 crate::draw::Draw 访问它。

将提供以下输入:

  • 一个表示文本字段内容的字符串

你的输出应遵循以下确切格式:

Text: Hello World

亲手试试

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:创建一个 TextField 实例,并调用它的 draw() 方法
}

面向对象编程中的所有课

自己练习: Rust 在线编译器