pub fn drain_aux(&mut self) {
        sfence();

        self.aux_valid = true;
        self.aux.foreach(|(off, next)| {
            let n = Self::buddy(off);
            n.next = next;
        });
        self.aux.clear();
        self.log64.foreach(|(off, data)| unsafe {
            let n = Self::buddy(off);
            std::intrinsics::atomic_store_rel(&mut n.next, data);
        });
        self.log64.clear();
        self.available = self.available_log;
    }
/// Drain the auxiliary list of changes
/// 
/// The functions [`alloc_impl`] and [`dealloc_impl`] fills up the auxiliary
/// buffer with the required changes to the free lists. Then, they call this
/// function to materialize the changes. The changes are not valid until
/// `drain_aux()` is called. The recovery procedure performs changes if they
/// are valid. Otherwise, it discards them.
/// 
/// [`alloc_impl`]: #method.alloc_impl
/// [`dealloc_impl`]: #method.dealloc_impl
Drain the auxiliary list of changes
The functions [`alloc_impl`] and [`dealloc_impl`] fills up the auxiliary
buffer with the required changes to the free lists. Then, they call this
function to materialize the changes. The changes are not valid until
`drain_aux()` is called. The recovery procedure performs changes if they
are valid. Otherwise, it discards them.


Drain the auxiliary list of changes The functions [ ` alloc_impl ` ] and [ ` dealloc_impl ` ] fills up the auxiliary buffer with the required changes to the free lists . Then they call this function to materialize the changes . The changes are not valid until ` drain_aux () ` is called . The recovery procedure performs changes if they are valid . Otherwise it discards them .
pub fn drain_aux(&mut self) {
        sfence();
        self.aux_valid = true;
        self.aux.foreach(|(off, next)| {
            let n = Self::buddy(off);
            n.next = next;
        });
        self.aux.clear();
        self.log64.foreach(|(off, data)| unsafe {
            let n = Self::buddy(off);
            std::intrinsics::atomic_store_rel(&mut n.next, data);
        });
        self.log64.clear();
        self.available = self.available_log;
    }
pub fn drain_aux ( & mut self ) { sfence ( ) ; self . aux_valid = true ; self . aux . foreach ( | ( off , next ) | { let n = Self :: buddy ( off ) ; n . next = next ; } ) ; self . aux . clear ( ) ; self . log64 . foreach ( | ( off , data ) | unsafe { let n = Self :: buddy ( off ) ; std :: intrinsics :: atomic_store_rel ( & mut n . next , data ) ; } ) ; self . log64 . clear ( ) ; self . available = self . available_log ; }
Drain the auxiliary list of changes
The functions [`alloc_impl`] and [`dealloc_impl`] fills up the auxiliary
buffer with the required changes to the free lists.
Drain the auxiliary list of changes The functions [ ` alloc_impl ` ] and [ ` dealloc_impl ` ] fills up the auxiliary buffer with the required changes to the free lists .
&mut self