When a variable is used in multiple distinct expressions, then only the last one is able to move.
The compiler would reduce boilerplate, by implicitly borrowing every usage other than the last one.
Caveats:
- Mutable borrows carry security implications. Don't implicitly borrow mutably.
- Some trivial loops may unroll into a recurring routine vs. final iteration routine, with implicit borrowing for the recurring routine. But the compiler may not always know whether an iteration is the final iteration. Generally, the compiler could treat variable use in loops as implicit borrows.