The copy change causes a compile-time error since the two arguments have a different type (*const T v.s. *mut T), so it’s impossible to miss, which is good.
I’m more worried about splitn. I think we should try harder than this not to make breaking changes that break silently. This should have been accompanied with a change to the name or signature, which is perhaps still worth doing.f
FWIW this was only allowed to happen due to being pre-beta. It was perhaps the wrong call, but in any case we have no intent to make this kind of change once the stability system is in effect.
(That includes, IMO, changes to unstable APIs; in the future we should take pains to cause visible breakage when we want to revamp a not-yet-stable API)