Menu
Coddy logo textTech

Итоги — Media Player

Часть раздела Объектно-ориентированное программирование путешествия по Rust на Coddy. Урок 34 из 61.

challenge icon

Задание

Легко

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

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

  • 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() на обоих экземплярах
}

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор Rust