Avatar ·

كيفية تمرير دالة كمعامل في Rust؟

مرحباً بالجميع! لقد بدأت للتو في تعلم Rust وواجهت مشكلة. في لغات أخرى، مثل Python أو JavaScript، يمكنني بسهولة تمرير دالة كوسيطة إلى دالة أخرى. على سبيل المثال: ```python def apply(func, x): return func(x) def double(x): return x * 2 result = apply(double, 5) ``` في Rust حاولت فعل شيء مشابه، لكن المترجم يعطي أخطاء. إليك الكود الخاص بي: ```rust fn apply(func: ???, x: i32) -> i32 { func(x) } fn double(x: i32) -> i32 { x * 2 } fn main() { let result = apply(double, 5); println!("{}", result); } ``` لا أفهم أي نوع يجب تحديده للمعامل `func`. جربت كتابة `fn(i32) -> i32`، لكنه لم يعمل. في التوثيق مكتوب عن traits `Fn` و `FnMut` و `FnOnce`، لكني مرتبك أي واحد يجب استخدامه وكيفية تعريف هذه الدوال بشكل صحيح. أرجو توضيح كيفية تمرير دالة كمعامل في Rust؟ ويفضل مع أمثلة توضيحية. <<>>

استخدام traits F