I don't think this will quite work. The idea of a `VolatilePtr` will be to store a *pointer*, not a value. This is leaking the previous memory (overwriting self.ptr), and deallocating the `ptr` box (it should store the value).