Given the `Unmovable` type below, what is the role of `PhantomPinned`, and what breaks if it is removed?use std::marker::PhantomPinned; struct Unmovable { data: String, self_ref: *const String, _pin: PhantomPinned, }