I had two reasons:

1. For an empty list, there is no item 0, and that would be bad.
2. (Not as important) For a non-empty list, AFAICT there is no code in either `slice::swap` or `ptr::swap` stopping it from actually performing the swap, i.e. copying item 0 to a temporary value, moving item 0 to item 0, and then copying the temp value back in. That seemed unnecessary...