take_ref provides the
to enable treating values and their reference/slice types interchangeably
until the moment taking ownership is required.
If taking ownership is required sometimes but not always,
this can eliminate the need to always copy data from reference types.