Avatar ·

如何在 Rust 中将切片(slice)转换为固定大小的数组(array)?

你好!我开始学习 Rust,遇到了一个看似简单但找不到优雅解决方案的问题。 我有一个来自向量或其他数组的切片(slice),例如 `&[u8]`。我需要将其转换为固定大小的数组,例如 `[u8; 4]`。在其他语言中,我只需强制转换类型或取前 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,我不确定这是否正确。请指教。