كيفية الحصول على شريحة (slice) كمصفوفة (array) ذات حجم ثابت في Rust؟
مرحبًا! بدأت تعلم Rust وواجهت مشكلة تبدو بسيطة، لكنني لا أجد حلاً أنيقًا.
لدي شريحة (slice) من متجه (vector) أو مصفوفة أخرى، مثل `&[u8]`. أحتاج إلى تحويلها إلى مصفوفة ذات حجم ثابت، مثل `[u8; 4]`. في لغات أخرى، كنت سأقوم بتحويل النوع (cast) أو أخذ أول N عناصر، لكن في Rust كل شيء صارم مع الأنواع.
هذا مثال لا يعمل:
```rust
fn main() {
let data: Vec = vec![1, 2, 3, 4, 5];
let slice: &[u8] = &data[0..4];
// أريد الحصول على مصفوفة [u8; 4]
let array: [u8; 4] = slice; // خطأ: توقع مصفوفة `[u8; 4]`، وُجد `&[u8]`
}
```
أعلم أنه يمكنني نسخ كل عنصر يدويًا، لكن هذا يبدو قبيحًا:
```rust
let mut array: [u8; 4] = [0; 4];
for (i, &val) in slice.iter().enumerate() {
array[i] = val;
}
```
هل هناك طريقة لفعل ذلك بشكل أكثر اصطلاحية؟ سمعت عن `try_into()`، لكنه يعيد Result، ولست متأكدًا من أنه صحيح. أرجو الإشارة.