I meant that your approach requires the code in the body to be the same and only mutability is “forwarded” - that’s essentially a trivial function. The example was a case where the code should differ but only slightly based on mutability. This is not a trivial case but your proposal doesn’t work for it (the fact you can work around with unwrap_or in this particular case doesn’t generalize).
They don’t cause a conflict. It would limit the type of code you can write in the fn body. In the immutable case the code can stick a 'static; in the mutable they may not. It’s just an example of an extra restriction on the code.
But maybe that’s fine as what you’re suggesting is mutability forwarding or “passthrough” mutability. I’m not sure I’d consider it abstraction, at least in the same sense as AsRef/AsMut/Borrow/BorrowMut but perhaps exact nomenclature is unimportant.