deadlock 0.10.0

Thread-safe slot map and slot min-heap with stable RAII handle
Documentation
use std::{mem, ptr};

#[easy_ext::ext(SliceExt)]
pub impl<T> [T] {
    unsafe fn swap_unchecked_(&mut self, index0: usize, index1: usize) {
        let base = self.as_mut_ptr();
        let elem0 = unsafe { &mut *base.add(index0) };
        let elem1 = unsafe { &mut *base.add(index1) };
        mem::swap(elem0, elem1)
    }
}

#[easy_ext::ext(VecExt)]
pub impl<T> Vec<T> {
    unsafe fn swap_remove_unchecked_(&mut self, index: usize) -> T {
        let len = self.len();

        unsafe {
            let base = self.as_mut_ptr();
            let value0 = ptr::read(base.add(index));
            ptr::copy_nonoverlapping(base.add(len - 1), base.add(index), 1);
            self.set_len(len - 1);
            value0
        }
    }
}