pub unsafe fn overwrite<'v, T>(&'v self, x: usize) -> T {
        assert!(x & 1 == 0, "Can't have the lowest bit set");
        assert_eq!(self.0.layout(), Layout::new::<T>());

        let sz = self.unpack().memory_size();
        let p = self as *const AValuePtr as *const (AValuePtr, T);
        let res = ptr::read(p).1;
        let p = self as *const AValuePtr as *mut usize;
        ptr::write(p, x | 1);
        ptr::write(p.add(1), sz);
        res
    }
/// After performing the overwrite any existing pointers to this value
/// are corrupted.
After performing the overwrite any existing pointers to this value
are corrupted.
After performing the overwrite any existing pointers to this value are corrupted .
pub unsafe fn overwrite<'v, T>(&'v self, x: usize) -> T {
        assert!(x & 1 == 0, "Can't have the lowest bit set");
        assert_eq!(self.0.layout(), Layout::new::<T>());
        let sz = self.unpack().memory_size();
        let p = self as *const AValuePtr as *const (AValuePtr, T);
        let res = ptr::read(p).1;
        let p = self as *const AValuePtr as *mut usize;
        ptr::write(p, x | 1);
        ptr::write(p.add(1), sz);
        res
    }
pub unsafe fn overwrite < ' v , T > ( & ' v self , x : usize ) -> T { assert ! ( x 1 0 " " ) ; assert_eq ! ( self 0 layout ( ) Layout new T ( ) ) ; let sz = self . unpack ( ) . memory_size ( ) ; let p = self as * const AValuePtr as * const ( AValuePtr , T ) ; let res = ptr :: read ( p ) . 1 ; let p = self as * const AValuePtr as * mut usize ; ptr :: write ( p , x | 1 ) ; ptr :: write ( p . add ( 1 ) , sz ) ; res }
After performing the overwrite any existing pointers to this value
are corrupted.
After performing the overwrite any existing pointers to this value are corrupted .
&'v self
x
usize
&'v self
x
usize