/// `Ptr<T>` usually refers to an item on the heap, like `Box<T>`.
/// It can be made from `T` with [`Ptr::new_heap()`],
/// or [`From<Box>`](#impl-From%3CBox%3CT%3E%3E-for-Ptr%3CT%3E).
+/// It is then freed again with [`.free_heap()`](Ptr::free_heap).
///
/// To access the contained data use,
/// [`Ptr::borrow()`]
/// Frees a `Ptr` that was made with `new_heap`
///
+ /// The contained `T` is dropped.
+ /// To keep it, use [`.free_heap_return()`](Ptr::free_heap_return).
+ ///
/// # SAFETY
///
- /// `self` must have come from `new_heap`,
+ /// `self` must have come from `new_heap` (or `From<Box>`)
/// and be the only remaining copy of this `Ptr`
/// (or the only one which will be used).
///
/// Frees a `Ptr` that was made with `new_heap` and returns the `T`
///
+ /// If `T` is not `Sized`,
+ /// you must use [`free_heap`](Ptr::free_heap) (discarding `T`)
+ /// or [`into_box`](Ptr::into_box) (leaving it on the heap).
+ ///
/// # SAFETY
///
/// The same rules as [`free_heap`](Ptr::free_heap) apply.