I made a similar project a while back into_owned - Rust
The reason I wanted this is to allow a hashmap entry api to allow passing by owned or by ref, and allowing the caller to chose whether they desire clone to be on the slow path, or whether they have the owned value left over anyway to avoid any clones.
ToOwned is frustrating sometimes since its an abstraction over Clone and not over generic Ownership