回顾:媒体播放器
本课属于 Coddy Rust 学习旅程的“面向对象编程”单元。第 34 课,共 61 课。
挑战
简单让我们构建一个简单的媒体播放器系统,通过 trait 展示不同媒体类型如何共享同一个接口!
你需要把代码分到三个文件中:
playable.rs:定义一个公开的Playabletrait,其中包含一个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 在线编译器