Avatar ·

كيفية الحصول على شريحة (slice) من Vec<T> في Rust؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم Rust وواجهت مشكلة أثناء العمل مع المتجهات. لدي `Vec`، وأحتاج إلى تمرير جزء من بياناته إلى دالة تقبل شريحة `&[u32]`. حاولت القيام بذلك بطرق مختلفة، لكنني أحصل باستمرار على أخطاء في الترجمة. إليك مثال على الكود الخاص بي: ```rust fn main() { let numbers = vec![10, 20, 30, 40, 50]; // أريد الحصول على شريحة من العناصر الثلاثة الأولى let slice = &numbers[0..3]; // دالة تقبل شريحة process_slice(slice); } fn process_slice(data: &[u32]) { for &item in data { println!("{}", item); } } ``` هذا الكود يعمل، لكنني لا أفهم بعض التفاصيل. على سبيل المثال: 1. ما الفرق بين `&vec[..]` و `vec.as_slice()`؟ هل يفعلان نفس الشيء؟ 2. كيف يمكنني الحصول على شريحة قابلة للتغيير (mutable slice) لتعديل العناصر داخل المتجه؟ 3. لماذا لا يمكنني ببساطة أخذ `vec[0..3]` بدون علامة العطف (ampersand)؟ 4. ماذا يحدث إذا حاولت أخذ شريحة خارج الحدود؟