تخطَّ إلى المحتوى

🦀 شرح Rust

الأنواع العامّة (Generics)

الدرس 17 من 25· ⏱ 1 دقائق قراءة

دالة عامّة

fn largest<T: PartialOrd>(list: &[T]) -> &T {
    let mut max = &list[0];
    for item in list {
        if item > max {
            max = item;
        }
    }
    max
}

let nums = vec![3, 7, 2, 9];
println!("{}", largest(&nums));   // 9

<T: PartialOrd> يعني: أي نوع يمكن مقارنته.

هيكل عامّ

struct Point<T> {
    x: T,
    y: T,
}

let int_p = Point { x: 1, y: 2 };
let float_p = Point { x: 1.0, y: 2.0 };

طرق عامّة

impl<T> Point<T> {
    fn x(&self) -> &T {
        &self.x
    }
}

الفائدة

كود واحد يعمل مع أنواع كثيرة دون تكرار — وبأمان كامل وقت الترجمة (لا تكلفة وقت تشغيل).

🎯 التالي: السمات (Traits).

هل كان هذا الدرس مفيدًا؟