Translate from a pointer type which is annotated with
This transfers the ownership of the value to the Rust side.
Because ownership can only be transferred if something is already referenced, this is unsuitable for floating references.
The implementation of this trait should not alter the reference count
or make copies of the underlying value.
Values obtained using this trait must be properly released on
by the implementing type.
For more information, refer to module level documentation.