rust vec如何转为数组?
- 使用
Vec
的into_boxed_slice
方法将Vec
转换为Box<[T]>
,然后使用into_vec
方法将Box<[T]>
转换为动态大小的数组。示例代码如下:
let vec: Vec<i32> = vec![1, 2, 3, 4, 5];
let array: Box<[i32]> = vec.into_boxed_slice();
let array: Vec<i32> = array.into_vec();
- 使用
Vec
的into_iter
方法将Vec
转换为迭代器,然后使用collect
方法将迭代器转换为数组。示例代码如下:
let vec: Vec<i32> = vec![1, 2, 3, 4, 5];
let array: Vec<i32> = vec.into_iter().collect();
- 使用
Vec
的as_slice
方法将Vec
转换为切片,然后使用try_into
方法将切片转换为固定大小的数组。示例代码如下:
use std::convert::TryInto;
let vec: Vec<i32> = vec![1, 2, 3, 4, 5];
let array: &[i32] = &vec[..];
let array: &[i32; 5] = array.try_into().unwrap();
- 使用
Vec
的as_ptr
方法获取指向数组的指针,然后使用from_raw_parts
方法将指针和长度转换为数组。示例代码如下:
use std::slice;
let vec: Vec<i32> = vec![1, 2, 3, 4, 5];
let ptr: *const i32 = vec.as_ptr();
let len: usize = vec.len();
let array: &[i32] = unsafe { slice::from_raw_parts(ptr, len) };
这些方式可以根据你的需求选择适当的方法来将 Vec
转换为数组。