Avatar ·

هل يمكن إنشاء إغلاق (closure) متكرر في Rust؟

مرحباً بالجميع! أنا أتعلم Rust وأحاول كتابة إغلاق متكرر لحساب المضروب (factorial). إليك الكود الخاص بي:\n\n```rust\nlet factorial = |n: u32| -> u32 {\n if n <= 1 {\n 1\n } else {\n n * factorial(n - 1) // خطأ: cannot capture `factorial` in its own initializer\n }\n};\n```\n\nالمُصرّف (compiler) يعطي خطأ: "cannot capture `factorial` in its own initializer". أفهم أن الإغلاق لا يمكنه التقاط متغير لم يتم تهيئته بالكامل بعد. ولكن كيف يمكنني إنشاء إغلاق متكرر؟\n\nلقد جربت تعريف `factorial` كـ `let factorial: Box u32>` لكن ذلك لم يساعد. أعلم أنه يمكنني استخدام دالة عادية `fn factorial(n: u32) -> u32`، لكني أحتاج تحديداً إلى إغلاق لأنني أريد التقاط متغيرات خارجية.\n\nأرشدوني، كي