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

pub trait PointerExt {
    fn uoffset(self, off: usize) -> Self;
}

impl<T> PointerExt for *const T {
    #[inline]
    fn uoffset(self, off: usize) -> Self {
        (self as usize + off * size_of::<T>()) as *const _
    }
}

impl<T> PointerExt for *mut T {
    #[inline]
    fn uoffset(self, off: usize) -> Self {
        (self as usize + off * size_of::<T>()) as *mut _
    }
}