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

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