#![allow(dead_code)]
pub(crate) trait Pointer {
unsafe fn distance(self, origin: Self) -> usize;
fn to_usize(self) -> usize;
}
impl<T> Pointer for *const T {
unsafe fn distance(self, origin: *const T) -> usize {
unsafe {
usize::try_from(self.offset_from(origin)).unwrap_unchecked()
}
}
fn to_usize(self) -> usize {
self as usize
}
}