Avatar ·

لماذا توجد أنواع مجهولة فريدة في Rust وكيفية التعامل معها؟

مرحباً بالجميع! بدأت مؤخراً في تعلم Rust، وواجهت سوء فهم حول مفهوم الأنواع المجهولة. قرأت أنه في Rust، كل closure لها نوع فريد غير قابل للتسمية. على سبيل المثال، هذا الكود: ```rust let add_one = |x: i32| x + 1; let double = |x: i32| x * 2; ``` أفهم أن `add_one` و `double` هما closures مختلفتان بأنواع مختلفة. لكن لماذا تم تصميمها بهذه الطريقة؟ في C++ أو لغات أخرى، يمكنني ببساطة تعريف pointer إلى دالة أو استخدام `std::function`. لماذا اتبعت Rust مسار إنشاء أنواع مجهولة فريدة؟ يبدو لي أن هذا يعقد كتابة الكود العام (generic code)، خاصة عندما أريد تمرير closure إلى دالة أو تخزينها في struct. على سبيل المثال، لا يمكنني ببساطة كتابة: ```rust fn apply(f: ???, x: i32) -> i32 { f(x) } ```