pub fn reserve<'v, 'v2: 'v, T: AValue<'v2>>(&'v self) -> Reservation<'v> {
        let p = Self::alloc_empty::<T>(&self.drop, 0);
        // If we don't have a vtable we can't skip over missing elements to drop,
        // so very important to put in a current vtable
        // We always alloc at least one pointer worth of space, so can write in a one-ST blackhole
        let x = BlackHole(mem::size_of::<T>());
        unsafe {
            ptr::write(p as *mut (AValuePtr, BlackHole), (AValuePtr::new(&x), x))
        };

        Reservation {
            typ: T::static_type_id(),
            pointer: p as *mut (AValuePtr, ()),
            phantom: PhantomData,
        }
    }
// Reservation should really be an incremental type
Reservation should really be an incremental type
Reservation should really be an incremental type
pub fn reserve<'v, 'v2: 'v, T: AValue<'v2>>(&'v self) -> Reservation<'v> {
        let p = Self::alloc_empty::<T>(&self.drop, 0);
        // If we don't have a vtable we can't skip over missing elements to drop,
        // so very important to put in a current vtable
        // We always alloc at least one pointer worth of space, so can write in a one-ST blackhole
        let x = BlackHole(mem::size_of::<T>());
        unsafe {
            ptr::write(p as *mut (AValuePtr, BlackHole), (AValuePtr::new(&x), x))
        };
        Reservation {
            typ: T::static_type_id(),
            pointer: p as *mut (AValuePtr, ()),
            phantom: PhantomData,
        }
    }
pub fn reserve < ' v , ' v2 : ' v , T : AValue < ' v2 > > ( & ' v self ) -> Reservation < ' v > { let p = Self :: alloc_empty :: < T > ( & self . drop , 0 ) ; // If we don't have a vtable we can't skip over missing elements to drop, // so very important to put in a current vtable // We always alloc at least one pointer worth of space, so can write in a one-ST blackhole let x = BlackHole ( mem :: size_of :: < T > ( ) ) ; unsafe { ptr :: write ( p as * mut ( AValuePtr , BlackHole ) , ( AValuePtr :: new ( & x ) , x ) ) } ; Reservation { typ : T :: static_type_id ( ) , pointer : p as * mut ( AValuePtr , ( ) ) , phantom : PhantomData , } }
Reservation should really be an incremental type
Reservation should really be an incremental type
&'v self
&'v self