كيفية تطبيق دالة على كل عنصر من عناصر المتجه في Rust (مشابه لـ map)؟
مرحبًا أيها الزملاء! لقد بدأت للتو في تعلم Rust، وانتقلت من Python، وواجهت مشكلة في معالجة المتجهات.
في Python كنت أفعل هكذا:
```python
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers)) # [1, 4, 9, 16]
```
أو باستخدام list comprehension، وهو أكثر سهولة.
في Rust كتبت كودًا مشابهًا:
```rust
fn main() {
let numbers = vec![1, 2, 3, 4];
// أريد الحصول على متجه جديد بأرقام مربعة
let squared: Vec = numbers.map(|x| x * x).collect();
println!("{:?}", squared);
}
```
المترجم يعطي خطأ:
```
error[E0599]: no method named `map` found for struct `Vec` in the current scope
```
أفهم أن Rust ليس Python، وهنا كل شيء أكثر صرامة مع الأنواع. ولكن كيف يمكن معالجة كل عنصر من عناصر المتجه؟ لقد سمعت عن بعض المكررات (iterators)، لكنني لا أفهم تمامًا كيفية استخدامها. من فضلكم، أخبروني كيف أطبق دالة على كل عنصر بشكل صحيح للحصول على متجه جديد؟ أحتاج إلى اسم