Avatar ·

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

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