The trouble is, when you say it's OK to infer "from the current code" that includes your function call, which is the thing where you're surprised it happens.
There's no coherent reason why it'd be OK for Rust to conclude that x is a u64 from
let x = some_u64.add(6); // the u64 type implement Add returning a u64
and yet not OK for Rust to conclude that x is a u64 from
let x = someFunction(); // someFunction was defined to return u64
You had to
explicitly change the return type of the method to cause yourself a surprise, Rust won't chase this rabbit through a warren, every individual function has to declare the types of its parameters and returns, so if you'd changed the function
body not its declared return type, it could not have caused any change in type inference in other functions.