Why are `&` and `mut` annotations required at the invocation (i.e. use site) of a function instead of implicit conversion?

Thanks for that clever insight. I will play devil's advocate so our logical analysis is complete.

I will instead argue that (necessarily because the destination, i.e. function declaration site, can't be inferred differently for every use site) the inference is now inverted from destination to source, i.e. the &x could be inferred.

And ditto, the ref on the destination is in the non-analogous position (i.e. on the destination), since we've inverted the opportunity for inference from destination to source.