{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreiewg4nehslx76tr6inkmobyokuprcyl5zixf2zk7pzcr6u47dwywa",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mjljlocz6xj2"
  },
  "path": "/t/t-sort-by-index-and-t-sort-by-key-and-index/24172#post_11",
  "publishedAt": "2026-04-16T02:43:44.000Z",
  "site": "https://internals.rust-lang.org",
  "textContent": "I imagine that `keys.sort_values(&mut values)` would be:\n\n\n    keys.manual_sort_unstable(|keys, i, j| {\n        mem::swap(&mut keys[i], &mut keys[j]);\n        mem::swap(&mut values[i], &mut values[j]);\n    });\n\n\nand then because the swap would be part of the std function instead of a custom closure, std can know that the slices won't change during sorting, so bounds checks can be skipped, like so:\n\n\n    keys.manual_sort_unstable(|keys, i, j| unsafe {\n        keys.swap_unchecked(i, j);\n        values.swap_unchecked(i, j);\n    });\n",
  "title": "`<[T]>::sort_by_index` and `<[T]>::sort_by_key_and_index`"
}