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

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