1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
use std::ptr::NonNull; /// Extensions to make working with NonNull easier. pub(crate) trait NonNullExt<T> { /// To a reference. fn reference<'any>(self) -> &'any T; /// To a mutable reference. fn mutable_reference<'any>(self) -> &'any mut T; } impl<T> NonNullExt<T> for NonNull<T> { #[inline(always)] fn reference<'any>(self) -> &'any T { unsafe { &*self.as_ptr() } } #[inline(always)] fn mutable_reference<'any>(self) -> &'any mut T { unsafe { &mut *self.as_ptr() } } }