luaur_common/functions/read.rs
1pub fn read<T: Copy>(data: &[u8], offset: &mut usize) -> T {
2 let size = core::mem::size_of::<T>();
3 assert!(*offset + size <= data.len(), "read out of bounds");
4
5 let mut result = core::mem::MaybeUninit::<T>::uninit();
6 unsafe {
7 core::ptr::copy_nonoverlapping(
8 data.as_ptr().add(*offset),
9 result.as_mut_ptr() as *mut u8,
10 size,
11 );
12 *offset += size;
13 result.assume_init()
14 }
15}