Report post #11 in Rust: cannot push to Vec while I hold reference to element, but why
For pairs from two separate halves, yes. For all pairs like you have, it just makes it harder to read. If you need to update both at once then split_at_mut, or swap to computing a list of deltas in one pass and applying them in a second. The second is often what you want for a simulation anyway, otherwise particle 0 moves before particle 1 has looked at it.