Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملخص - مشغل الوسائط

جزء من قسم البرمجة كائنية التوجه في رحلة Rust على Coddy. الدرس 34 من 61.

challenge icon

التحدي

سهل

لنبنِ نظامًا بسيطًا لتشغيل الوسائط يوضّح كيف يمكن لأنواع الوسائط المختلفة مشاركة واجهة مشتركة من خلال trait!

ستنظّم الكود الخاص بك عبر ثلاثة ملفات:

  • playable.rs: Define trait من النوع Playable يكون public، مع method play(&self) تطبع مخرجات عند استدعائها. يمثّل هذا trait الإمكانية المشتركة التي ستكون لدى جميع أنواع الوسائط.
  • media.rs: أنشئ بنيتين public تطبّقان trait الخاص بك:
    • Audio: مع field title من النوع public (String)، يطبع Playing audio: {title} عند تشغيله
    • Video: مع field title من النوع public (String)، يطبع Playing video: {title} عند تشغيله
  • main.rs: اجمع الوحدات الخاصة بك وأنشئ instances من كلا نوعَي الوسائط باستخدام المدخلات المقدّمة. استدعِ method 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 باستخدام audio_title
    
    // TODO: أنشئ مثيل Video باستخدام video_title
    
    // TODO: استدعِ play() على كلا المثيلين
}

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Rust عبر الإنترنت