unsafe fn destroy(this: *mut Block<T>, count: usize) {
        // It is not necessary to set the `DESTROY` bit in the last slot because that slot has
        // begun destruction of the block.
        for i in (0..count).rev() {
            let slot = (*this).slots.get_unchecked(i);

            // Mark the `DESTROY` bit if a thread is still using the slot.
            if slot.state.load(Ordering::Acquire) & READ == 0
                && slot.state.fetch_or(DESTROY, Ordering::AcqRel) & READ == 0
            {
                // If a thread is still using the slot, it will continue destruction of the block.
                return;
            }
        }

        // No thread is using the block, now it is safe to destroy it.
        drop(Box::from_raw(this));
    }
/// Sets the `DESTROY` bit in slots starting from `start` and destroys the block.
Sets the `DESTROY` bit in slots starting from `start` and destroys the block.
Sets the ` DESTROY ` bit in slots starting from ` start ` and destroys the block .
unsafe fn destroy(this: *mut Block<T>, count: usize) {
        // It is not necessary to set the `DESTROY` bit in the last slot because that slot has
        // begun destruction of the block.
        for i in (0..count).rev() {
            let slot = (*this).slots.get_unchecked(i);
            // Mark the `DESTROY` bit if a thread is still using the slot.
            if slot.state.load(Ordering::Acquire) & READ == 0
                && slot.state.fetch_or(DESTROY, Ordering::AcqRel) & READ == 0
            {
                // If a thread is still using the slot, it will continue destruction of the block.
                return;
            }
        }
        // No thread is using the block, now it is safe to destroy it.
        drop(Box::from_raw(this));
    }
unsafe fn destroy ( this : * mut Block < T > , count : usize ) { // It is not necessary to set the `DESTROY` bit in the last slot because that slot has // begun destruction of the block. for i in ( 0 .. count ) . rev ( ) { let slot = ( * this ) . slots . get_unchecked ( i ) ; // Mark the `DESTROY` bit if a thread is still using the slot. if slot . state . load ( Ordering :: Acquire ) & READ == 0 && slot . state . fetch_or ( DESTROY , Ordering :: AcqRel ) & READ == 0 { // If a thread is still using the slot, it will continue destruction of the block. return ; } } // No thread is using the block, now it is safe to destroy it. drop ( Box :: from_raw ( this ) ) ; }
Sets the `DESTROY` bit in slots starting from `start` and destroys the block.
Sets the ` DESTROY ` bit in slots starting from ` start ` and destroys the block .
this
*mut Block<T>
count
usize
this
*mut Block<T>
count
usize