Avatar ·

كيفية حفظ الإغلاق (closure) في هيكل (struct) في Rust؟

مرحبًا! بدأت تعلم Rust وواجهت مشكلة عند محاولة حفظ إغلاق في هيكل. لدي آلة حاسبة بسيطة يجب أن تنفذ عمليات مختلفة اعتمادًا على الإغلاق المُمرر. إليك ما أحاول فعله: ```rust struct Calculator { operation: fn(i32, i32) -> i32, } fn main() { let add = |a, b| a + b; let calc = Calculator { operation: add }; println!("Result: {}", (calc.operation)(5, 3)); } ``` هذا الكود يعمل، ولكن فقط إذا مررت دالة عادية أو إغلاقًا لا يلتقط متغيرات من البيئة الخارجية. بمجرد أن أحاول استخدام إغلاق يلتقط متغيرات، يُصدر المترجم خطأ. على سبيل المثال: ```rust let multiplier = 2; let multiply = |a, b| a * b * multiplier; let calc = Calculator { operation: multiply }; // خطأ! ``` قرأت عن traits `Fn` و `FnMut` و `FnOnce`، لكنني لا أفهم كيفية استخدامها بشكل صحيح في الهياكل. كيف يمكنني جعل الهيكل قادرًا على تخزين