I think it's still correct. `swapAt` calls `swap(r[i], r[j])` when available, or just uses `moveAt` and assignment, so assignment is still a sufficient requirement, i.e. you don't need `hasSwappable!T` to call `swapAt`.