Avatar ·

كيفية تحويل Vec<T> إلى مصفوفة [T; N] في Rust؟

مرحباً بالجميع! أنا مبتدئ في Rust وواجهت مشكلة أثناء العمل مع المتجهات والمصفوفات. أكتب محللاً صغيراً حيث أحتاج إلى الحصول على مصفوفة ثابتة من 4 عناصر من متجه. لدي `Vec` أحصل عليه بعد قراءة البيانات من ملف، وأريد تحويله إلى `[u8; 4]` لتمريره إلى دالة تتوقع مصفوفة ذات طول ثابت. هذا هو الكود الخاص بي: ```rust fn process_data(data: [u8; 4]) { println!("{:?}", data); } fn main() { let vec: Vec = vec![10, 20, 30, 40]; // كيفية تحويل vec إلى [u8; 4]؟ // process_data(vec); // لا يترجم: expected array `[u8; 4]`, found struct `Vec` } ``` حاولت استخدام `vec.as_slice()` لكنه يعطي `&[u8]` وليس `[u8; 4]`. حاولت التحويل عبر `vec.into_iter().collect()` لكن collect يعيد Vec وليس مصفوفة. رأيت في التوثيق أن هناك طريقة `try_into()` لكن لم أتمكن من جعلها تعمل. أرجو إرشادي حول كيفية تحويل Vec إلى مصفوفة بشكل صحيح وآمن.