如何在 Rust 中将 Vec<T> 转换为数组 [T; N]?
大家好!我是 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); // 无法编译:期望数组 `[u8; 4]`,但找到了结构体 `Vec`
}
```
我尝试过使用 `vec.as_slice()`,但这会得到 `&[u8]`,而不是 `[u8; 4]`。我还尝试通过 `vec.into_iter().collect()` 进行转换,但 collect 返回的是 Vec,而不是数组。我在文档中看到有一个 `try_into()` 方法,但我没能让它工作。请告诉我如何正确且安全地将 Vec 转换为固定数组。