Menu
Coddy logo textTech

Итоги — Media Player

Часть раздела Object Oriented Programming путешествия по Rust на Coddy — урок 34 из 61.

challenge icon

Задание

Легко

Давайте создадим простую систему медиаплеера, которая демонстрирует, как различные типы медиа могут использовать общий интерфейс через типажи (traits)!

Вы организуете свой код в трех файлах:

  • playable.rs: Определите публичный типаж Playable с методом play(&self), который выводит результат при вызове. Этот типаж представляет собой общую возможность, которой будут обладать все типы медиа.
  • media.rs: Создайте две публичные структуры, реализующие ваш типаж:
    • Audio — с публичным полем title (String), которое при воспроизведении выводит Playing audio: {title}
    • Video — с публичным полем title (String), которое при воспроизведении выводит Playing video: {title}
  • main.rs: Объедините ваши модули и создайте экземпляры обоих типов медиа, используя предоставленные входные данные. Вызовите метод play для каждого из них, чтобы продемонстрировать, как один и тот же типаж выдает разные результаты в зависимости от типа медиа.

Ваш вывод должен соответствовать следующему формату:

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 с audio_title
    
    // TODO: Создать экземпляр Video с video_title
    
    // TODO: Вызвать play() для обоих экземпляров
}

Все уроки раздела Object Oriented Programming