لماذا توجد أنواع مجهولة فريدة في Rust وكيفية التعامل معها؟
مرحباً بالجميع! بدأت تعلم Rust مؤخراً، وواجهت سوء فهم مع مفهوم الأنواع المجهولة. قرأت أنه في Rust، كل closure literal له نوع فريد غير قابل للتسمية. على سبيل المثال، هذا الكود:
```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)
}
```