1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use std::mem::size_of;

pub fn to_data<Result: Copy, T>(value: T) -> Vec<Result> {
    let ptr: *const Result = (&value) as *const T as *const Result;
    let mut result = vec![];

    let size = size_of::<T>() / size_of::<Result>();

    for i in 0..size {
        result.push(unsafe { *ptr.add(i) });
    }

    result
}

pub fn data_pointer<T>(value: T) -> usize {
    unsafe { *((&value) as *const T as *const usize) }
}