Recently, I found myself wanting to use Option<T>.into::<Option<U>>() where T: Into<U>, but I realized that this wasn't a part of the standard library. I subsequently wanted to contribute an implementation (which would be as simple as |i| i.map(|j| j.into())), but realized that the compiler does not allow it with E0119. If I understand the problem correctly, it is because the types U and T may be identical, which would lead to the monomorphized implementation trying to override the one in libcore (that is, if there is one and it's not implicit). If my diagnosis is correct, is there a way to communicate U != T to the compiler?
I have a contrived example of this on the playground, should anyone want to tweak it.