كيفية دمج متجهين (Vec) في Rust بشكل صحيح؟ أفضل طرق الربط
مرحباً بالجميع! لقد بدأت للتو في تعلم Rust وواجهت مشكلة دمج متجهين. لنفترض أن لدي متجهين من الأرقام: `vec1` و `vec2`. أحتاج إلى الحصول على متجه ثالث يحتوي على جميع العناصر من الأول ثم جميع العناصر من الثاني.
في Python كنت سأكتب ببساطة `vec1 + vec2`، لكن هذا لا يعمل في Rust. جربت عدة طرق، لكنني لست متأكداً أي منها صحيح وفعال.
إليك الكود الخاص بي:
```rust
let mut vec1 = vec![1, 2, 3];
let vec2 = vec![4, 5, 6];
// المحاولة 1: الجمع البسيط (لا يتم ترجمته)
// let result = vec1 + vec2;
// المحاولة 2: عبر extend
vec1.extend(vec2);
println!("{:?}", vec1); // حصلت على [1, 2, 3, 4, 5, 6]، لكن vec1 تغير
// المحاولة 3: عبر حلقة
let mut result = Vec::new();
for item in &vec1 {
result.push(*item);
}
for item in &vec2 {
result.push(*item);
}
```
المشاكل:
1. `extend` يأخذ الملكية ويغير المتجه الأصلي، وهذا ليس مناسباً دائماً.
2. الحلقة تبدو ضخمة وربما ليست الأفضل