Avatar ·

كيفية إزالة عنصر من متجه في Rust بناءً على قيمته؟

مرحبًا أيها المجتمع! أنا مبتدئ في Rust وأحاول فهم المتجهات. لدي متجه، على سبيل المثال: `let mut numbers = vec![1, 2, 3, 4, 5];` وأريد إزالة عنصر منه بناءً على قيمته وليس على الفهرس. لنقل أنني أريد إزالة الرقم `3`. في لغات أخرى، مثل Python، كنت سأكتب `numbers.remove(3)` أو `numbers = [x for x in numbers if x != 3]`. لكن في Rust الأمر أكثر تعقيدًا. حاولت استخدام دالة `remove()`، لكنها تأخذ الفهرس وليس القيمة. ثم حاولت كتابة حلقة: ```rust let mut numbers = vec![1, 2, 3, 4, 5]; let target = 3; for (i, &val) in numbers.iter().enumerate() { if val == target { numbers.remove(i); break; } } ``` لكن المترجم أظهر خطأً حول مدقق الاقتراض (borrow checker). قرأت أنه في Rust لا يمكن تعديل المجموعة أثناء التكرار عليها. كيف يمكن إزالة عنصر بناءً على قيمته بشكل صحيح؟ ماذا لو كان هناك عدة عناصر متطابقة في المتجه؟ على سبيل المثال، `vec![1, 2, 3, 3, 4]` — هل يجب إزالة أول ظهور فقط؟