1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
use crate::extensions::prelude::*;

/// Useful extensions.
pub(crate) trait PointerMutExt<T>: PointerExt<T> {
    /// Mutable reference.
    fn mutable_reference<'a>(self) -> &'a mut T;
}

impl<T> PointerMutExt<T> for *mut T {
    #[inline(always)]
    fn mutable_reference<'a>(self) -> &'a mut T {
        debug_assert!(self.is_not_null(), "null pointers can not be derefenced");

        unsafe { &mut *self }
    }
}