In the book:
In order to tell dropck that we do own values of type T, and therefore may drop some T's when we drop, we must add an extra PhantomData saying exactly that
however:
#[repr(C)]
pub struct Unique<T> {
ptr : *mut T,
_marker : ::core::marker::PhantomData<T>,
}
impl<T> Unique<T> {
pub fn new(ptr: *mut T) -> Self { Self { ptr : ptr, _marker: ::core::marker::PhantomData } }
pub fn getMutPtr(&mut self) -> *mut T { self.ptr }
pub fn getPtr(&self) -> *const T { self.ptr }
}
#[repr(C)]
pub struct Vec<T> {
elements : Unique<T>,
count : usize,
capacity : usize,
}
...
Will compile and Vec<T> can be used and dropped without any problem. So, what's the point of PhantomData there ? unless I implement Drop on Vec the code with or without PhantomData will compile just fine!
In the book:
however:
Will compile and
Vec<T>can be used and dropped without any problem. So, what's the point of PhantomData there ? unless I implementDroponVecthe code with or withoutPhantomDatawill compile just fine!