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

مكون النص

جزء من قسم Object Oriented Programming في رحلة Rust على Coddy — الدرس 50 من 61.

challenge icon

التحدي

سهل

بناءً على سمة Draw التي أنشأتها في الدرس السابق، دعنا نضيف أول مكون واجهة مستخدم حقيقي: TextField. سيمثل هذا المكون عنصر عرض نصي في نظام المستندات الخاص بنا.

ستقوم بتوسيع مشروعك بملف وحدة (module) جديد:

  • draw.rs: احتفظ بسمة Draw الخاصة بك من التحدي السابق.
  • text_field.rs: أنشئ هيكل TextField مع حقل content عام (من نوع String). قم بتنفيذ سمة Draw لـ TextField بحيث يؤدي استدعاء draw() إلى طباعة النص بتنسيق محدد: Text: {content}
  • main.rs: قم باستيراد كلا الوحدتين وأنشئ مثيلاً لـ TextField. استدعِ تابع draw() الخاص به لعرض المكون.

تذكر أن وحدة text_field الخاصة بك تحتاج إلى استخدام سمة Draw من وحدة draw. يمكنك الوصول إليها باستخدام crate::draw::Draw بما أن كلا الوحدتين جزء من نفس الـ crate.

سيتم توفير المدخلات التالية:

  • سلسلة نصية تمثل محتوى حقل النص

يجب أن يتبع مخرجك هذا التنسيق تماماً:

Text: Hello World

جرّب بنفسك

mod draw;
mod text_field;

use draw::Draw;

pub struct Label {
    pub text: String,
}

impl Draw for Label {
    fn draw(&self) {
        println!("{}", self.text);
    }
}

fn main() {
    let mut input = String::new();
    std::io::stdin().read_line(&mut input).expect("Failed to read line");
    let content = input.trim().to_string();

    // TODO: أنشئ كائن TextField واستدعِ الدالة draw() عليه
}

جميع دروس Object Oriented Programming