unsafe fn new_copy_slice<'a, T: 'a>(x: &[T], j: &Journal<Self>) -> &'a mut [T] where Self: MemPool {
        let s = mem::size_of_val(x);
        debug_assert!(s != 0, "Cannot allocated ZST");

        let mut log = Log::drop_on_failure(u64::MAX, 1, j);
        let (p, off, len, z) = Self::pre_alloc(s);
        if p.is_null() {
            panic!("Memory exhausted");
        }
        Self::drop_on_failure(off, len, z);
        std::ptr::copy_nonoverlapping(x as *const [T] as *const u8, p, s);
        log.set(off, len, z);
        Self::perform(z);
        &mut *utils::read(p)
    }
/// Allocates new memory and then copies `x` into it with `DropOnFailure` log
Allocates new memory and then copies `x` into it with `DropOnFailure` log
Allocates new memory and then copies ` x ` into it with ` DropOnFailure ` log
unsafe fn new_copy_slice<'a, T: 'a>(x: &[T], j: &Journal<Self>) -> &'a mut [T] where Self: MemPool {
        let s = mem::size_of_val(x);
        debug_assert!(s != 0, "Cannot allocated ZST");
        let mut log = Log::drop_on_failure(u64::MAX, 1, j);
        let (p, off, len, z) = Self::pre_alloc(s);
        if p.is_null() {
            panic!("Memory exhausted");
        }
        Self::drop_on_failure(off, len, z);
        std::ptr::copy_nonoverlapping(x as *const [T] as *const u8, p, s);
        log.set(off, len, z);
        Self::perform(z);
        &mut *utils::read(p)
    }
unsafe fn new_copy_slice < ' a , T : ' a > ( x : & [ T ] , j : & Journal < Self > ) -> & ' a mut [ T ] where Self : MemPool { let s = mem :: size_of_val ( x ) ; debug_assert ! ( s 0 " " ) ; let mut log = Log :: drop_on_failure ( u64 :: MAX , 1 , j ) ; let ( p , off , len , z ) = Self :: pre_alloc ( s ) ; if p . is_null ( ) { panic ! ( " " ) ; } Self :: drop_on_failure ( off , len , z ) ; std :: ptr :: copy_nonoverlapping ( x as * const [ T ] as * const u8 , p , s ) ; log . set ( off , len , z ) ; Self :: perform ( z ) ; & mut * utils :: read ( p ) }
Allocates new memory and then copies `x` into it with `DropOnFailure` log
Allocates new memory and then copies ` x ` into it with ` DropOnFailure ` log
x
&[T]
j
&Journal<Self>