如何在 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,我不确定这是否正确。请指教。