cad_import/loader/loader_gltf/
utils.rs1use gltf::accessor::DataType;
2
3pub fn get_size_in_bytes(data_type: DataType) -> usize {
8 match data_type {
9 DataType::I8 => 1,
10 DataType::U8 => 1,
11 DataType::I16 => 2,
12 DataType::U16 => 2,
13 DataType::U32 => 4,
14 DataType::F32 => 4,
15 }
16}
17
18pub fn transmute_vec<U: Sized, V: Sized>(vec: Vec<U>) -> Vec<V> {
24 assert_eq!(std::mem::size_of::<U>(), std::mem::size_of::<V>());
25
26 unsafe {
27 let mut v_clone = std::mem::ManuallyDrop::new(vec);
28 Vec::from_raw_parts(
29 v_clone.as_mut_ptr() as *mut V,
30 v_clone.len(),
31 v_clone.capacity(),
32 )
33 }
34}
35
36#[cfg(test)]
37mod test {
38 use super::*;
39
40 #[test]
41 fn test_transmute() {
42 let values = vec![0u32, 13u32, 52u32];
43 let values: Vec<i32> = transmute_vec(values);
44
45 assert_eq!(values, [0i32, 13i32, 52i32]);
46 }
47}