我试图将一个类型的Vec转换为类型的Vec,最好是原地进行转换而不会产生太多开销。
我的当前解决方案依赖于不安全的代码来重新构建这个Vec。有没有更好的方法来解决这个问题?使用我的解决方案会有什么风险?
use std::mem;
use std::vec::Vec;
fn main() {
let mut vec32 = vec![1u32, 2];
let vec8;
unsafe {
let length = vec32.len() * 4; // size of u8 = 4 * size of u32
let capacity = vec32.capacity() * 4; // ^
let mutptr = vec32.as_mut_ptr() as *mut u8;
mem::forget(vec32); // don't run the destructor for vec32
// construct new vec
vec8 = Vec::from_raw_parts(mutptr, length, capacity);
}
println!("{:?}", vec8)
}