I'm not sure what you mean. Can you give an example?
fn foo(x: &S);
fn foo(y: &T);
in scope, then the compiler needs you to disambiguate foo(&a) if a: A. This isn't a whole lot different than disambiguating the same expression if the functions are: fn foo(x: &A);
fn foo(x: &mut A);