Aren't unique pointer also scheduled for decommission?
Now, some of the syntax for using them might still change. That's yet to be decided. But it wouldn't be Rust without unique pointers.
E.g. the following is almost exactly identical to `~T`
#[unsafe_no_drop_flag]
struct Uniq<T> { priv ptr: *mut T }
impl<T> Uniq<T> {
fn new(value: T) -> Uniq<T> {
unsafe {
let ptr = malloc(size_of::<T>()) as *mut T;
if ptr.is_null() { fail!("malloc failed"); }
move_val_init(&mut *ptr, value);
Uniq { ptr: ptr }
}
}
fn borrow<'a>(&'a self) -> &'a T {
unsafe {&*self.ptr}
}
fn borrow_mut<'a>(&'a mut self) -> &'a mut T {
unsafe {&mut *self.ptr}
}
fn move(mut self) -> T {
unsafe {
let v = ptr::read_ptr(self.ptr as *T);
free(self.ptr);
self.ptr = 0;
v
}
}
}
#[unsafe_destructor]
impl<T> Drop for Uniq<T> {
fn drop(&mut self) {
unsafe {
// this will free the pointer and run the
// destructor of the inner type
replace(self, transmute(0)).move();
}
}
}