Function core_extensions::utils::transmute_vec

source ·
pub unsafe fn transmute_vec<T, U>(vector: Vec<T>) -> Vec<U>
Expand description

Transmutes a Vec<T> into a Vec<U>

§Safety

This function has the safety requirements of std::mem::transmute regarding transmuting from T to U. T must also have the same alignment as U.

§Example

use core_extensions::utils::transmute_vec;

use std::mem::ManuallyDrop;

unsafe{
    assert_eq!(transmute_vec::<u32, i32>(vec![!0, 0, 1]), vec![-1, 0, 1]);
}

fn make(s: &str) -> ManuallyDrop<String> {
    ManuallyDrop::new(String::from(s))
}
unsafe{
    assert_eq!(
        transmute_vec::<String, ManuallyDrop<String>>(vec!["hello".into(), "world".into()]),
        vec![make("hello"), make("world")],
    );
}