Menu
CoddyTech

回顾:媒体播放器

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

challenge icon

挑战

简单

让我们构建一个简单的媒体播放器系统,通过 trait 展示不同媒体类型如何共享同一个接口!

你需要把代码分到三个文件中:

  • playable.rs:定义一个公开的 Playable trait,其中包含一个 play(&self) 方法,调用时会打印输出。这个 trait 表示所有媒体类型都具备的共同能力。
  • media.rs:创建两个实现该 trait 的公开结构体:
    • Audio:包含一个公开的 title 字段(String),播放时会打印 Playing audio: {title}
    • Video:包含一个公开的 title 字段(String),播放时会打印 Playing video: {title}
  • main.rs:整合各个模块,并使用提供的输入创建这两种媒体类型的实例。分别调用它们的 play 方法,展示同一个 trait 如何根据媒体类型产生不同的输出。

输出格式如下:

Playing audio: {audio_title}
Playing video: {video_title}

例如,输入为 Bohemian Rhapsody 和 The Matrix 时:

Playing audio: Bohemian Rhapsody
Playing video: The Matrix

你将收到两个输入:音频标题和视频标题。

亲手试试

mod playable;
mod media;

use media::{Audio, Video};
use playable::Playable;

fn main() {
    // 读取输入
    let mut audio_title = String::new();
    std::io::stdin().read_line(&mut audio_title).expect("Failed to read line");
    let audio_title = audio_title.trim().to_string();
    
    let mut video_title = String::new();
    std::io::stdin().read_line(&mut video_title).expect("Failed to read line");
    let video_title = video_title.trim().to_string();
    
    // TODO:用 audio_title 创建一个 Audio 实例
    
    // TODO:用 video_title 创建一个 Video 实例
    
    // TODO:对两个实例都调用 play()
}

面向对象编程中的所有课

自己练习: Rust 在线编译器